Sie möchten, dass Kunden nach dem Login auf einer bestimmten Seite landen, oder Sie müssen einen Link oder ein Skript zur Login-Seite hinzufügen. Custom Login für WooCommerce bietet Ihnen Hooks für beides, sodass Sie Plugin-Dateien nicht bearbeiten müssen. Es verfügt auch über einen REST API-Endpunkt, der die Einstellungen des Plugins per Code liest und aktualisiert.
Dieser Artikel behandelt den clwc_login_redirect Filter, die clwc_after_login_form und clwc_login_footer Actions und den /settings REST API-Endpunkt. Er listet auch drei kleinere Hooks in einer kurzen Tabelle auf. Die Einrichtung der Login-Seite selbst wird in Erste Schritte mit Custom Login für WooCommerce behandelt.
Voraussetzungen
| Anforderung | Details |
|---|---|
| Plugin | Custom Login für WooCommerce 1.0.3 oder neuer, installiert und aktiv |
| WooCommerce | Version 6.0 oder neuer, installiert und aktiv |
| Zugriff | Eine Möglichkeit, PHP-Code hinzuzufügen, wie z. B. ein benutzerdefiniertes Plugin oder ein Child-Theme |
| REST API-Zugriff | Ein Konto mit der Berechtigung manage_woocommerce für den REST API-Endpunkt |
Wie die Hooks in die Login-Seite passen
Das Plugin liefert Ihre /login-Seite aus einer eigenen, eigenständigen Vorlage. Diese Vorlage lädt weder den Header noch den Footer Ihres Themes und ruft weder wp_head() noch wp_footer() auf. Daher wird ein Callback, der zu wp_head oder wp_footer hinzugefügt wurde, auf dieser Seite nie ausgeführt. Verwenden Sie stattdessen die unten aufgeführten Hooks des Plugins.
Beachten Sie, dass der Redirect-Filter bei der Formularübermittlung ausgeführt wird, während die beiden Actions ausgeführt werden, wenn die Login-Seite angezeigt wird.
Filter: clwc_login_redirect
Dieser Filter ändert, wohin ein Kunde direkt nach einem erfolgreichen Login weitergeleitet wird. Er wird nicht ausgeführt, wenn ein Login fehlschlägt.
apply_filters( 'clwc_login_redirect', $redirect_to, $user );
| Parameter | Typ | Beschreibung |
|---|---|---|
$redirect_to | string | Die URL, zu der der Kunde gerade gesendet wird |
$user | WP_User | Das Konto, das sich gerade angemeldet hat |
Geben Sie die gewünschte URL zurück. Der Startwert von $redirect_to ist der Wert von redirect_to, der an die Login-Seite übergeben wird, z. B. ihrshop.com/login/?redirect_to=.... Wenn keiner vorhanden ist, ist es die URL der WooCommerce Mein Konto-Seite.
Hier ist, was passiert, nachdem Ihr Callback zurückgegeben wurde:
- WooCommerce's eigener
woocommerce_login_redirectFilter wird als nächstes ausgeführt. Jeder Callback für diesen Filter sieht Ihr Ergebnis und kann es erneut ändern. - Das Plugin überprüft die endgültige URL. Wenn sie auf eine andere Domain verweist, die WordPress nicht zulässt, leitet das Plugin den Kunden stattdessen zu Mein Konto weiter.
- Das Plugin leitet den Kunden weiter.
Beispiel: Shop-Manager an das Dashboard senden
add_filter( 'clwc_login_redirect', function ( $redirect_to, $user ) {
if ( in_array( 'shop_manager', (array) $user->roles, true ) ) {
return admin_url();
}
return $redirect_to;
}, 10, 2 );
Die 10 ist die Priorität des Callbacks und die 2 teilt WordPress mit, dass Ihr Callback zwei Parameter akzeptiert. Ohne die 2 erhalten Sie $user nicht.
Aktionen: clwc_after_login_form und clwc_login_footer
Beide Aktionen ermöglichen es Ihnen, Ihr eigenes HTML auf der Anmeldeseite auszugeben. Keine der beiden übergibt Parameter, sodass Ihr Callback keine Argumente benötigt. Geben Sie Ihren Inhalt mit echo aus.
| Aktion | Wo sie ausgelöst wird |
|---|---|
clwc_after_login_form | Direkt nach dem schließenden </form>-Tag, immer noch innerhalb des Anmeldeformular-Panels. Der Inhalt erscheint unter dem Formular. |
clwc_login_footer | Nach dem gesamten Zwei-Panel-Layout, nahe dem Ende der Seite. Der Inhalt ist nicht in einem der Panels. |
Beispiel: Einen Link unter dem Anmeldeformular hinzufügen
add_action( 'clwc_after_login_form', function () {
echo '<p><a href="' . esc_url( home_url( '/become-a-customer/' ) ) . '">Need an account? Apply here.</a></p>';
} );
Beispiel: Eine Textzeile zur Seitenfußzeile hinzufügen
add_action( 'clwc_login_footer', function () {
echo '<p style="text-align:center;">Need help? Call us on 1300 000 000.</p>';
} );
Andere Hooks auf der Anmeldeseite
Diese Hooks sind kleiner und weniger gebräuchlich. Sie funktionieren genauso wie die obigen Aktionen und Filter.
| Hook | Typ | Was es tut |
|---|---|---|
clwc_logout_redirect | Filter | Ändert, wohin Kunden nach dem Abmelden weitergeleitet werden. Empfängt die Standard-URL, die /login/?logged_out=true lautet, und gibt die gewünschte URL zurück. |
clwc_login_head | Aktion | Wird innerhalb des <head>-Tags der Seite ausgelöst, nach den Styles des Plugins. Verwenden Sie ihn, um eine Stylesheet- oder Meta-Tag hinzuzufügen. |
clwc_login_enqueue_scripts | Aktion | Wird nahe dem Ende der Seite ausgelöst. Verwenden Sie ihn, um Skripte für die Anmeldeseite einzureihen. |
Das Anmeldeformular löst auch die Standard-Anmelde-Hooks von WooCommerce aus: woocommerce_login_form_start, woocommerce_login_form und woocommerce_login_form_end. Deshalb funktionieren die meisten CAPTCHA- und Sicherheit-Plugins, die auf dem WooCommerce-Anmeldeformular funktionieren, auch hier.
REST-API: Einstellungs-Endpunkt
Das Plugin hat einen REST-API-Endpunkt für seine Einstellungen. Er ermöglicht es Ihnen, die aktuellen Einstellungen zu lesen oder sie aus Code zu aktualisieren, zum Beispiel wenn Sie viele Shops mit einem Skript einrichten.
/wp-json/clwc/v1/settings
| Methode | Was es tut |
|---|---|
GET | Gibt alle Einstellungen sowie die Liste der rotation_items zurück |
POST | Aktualisiert die von Ihnen gesendeten Einstellungen und gibt alle Einstellungen zurück |
Wer kann es benutzen
Beide Methoden erfordern ein angemeldetes Konto mit der Berechtigung manage_woocommerce. Dazu gehören Administratoren und Shop-Manager. Jeder andere erhält eine 401- oder 403-Antwort.
Senden Sie für eine Anfrage vom Browser, während Sie angemeldet sind, den Header X-WP-Nonce mit einem wp_rest-Nonce. Verwenden Sie für eine Anfrage von außerhalb von WordPress ein Anwendungspasswort mit Basisauthentifizierung.
Lies die Einstellungen
curl -u "admin:APPLICATION_PASSWORD" https://yourstore.com/wp-json/clwc/v1/settings
Die Antwort ist ein JSON-Objekt. Alle Einstellungen, die du noch nicht gespeichert hast, werden mit ihrem Standardwert zurückgegeben, außer logo_url, das bis zur Speicherung einer Logo-URL aus der Antwort fehlt.
Aktualisiere die Einstellungen
Sende einen JSON-Body mit nur den Feldern, die du ändern möchtest. Felder, die du weglässt, bleiben unverändert.
curl -X POST -u "admin:APPLICATION_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"template":"template-2","button_bg":"#e11d48","login_heading":"Welcome back"}' \
https://yourstore.com/wp-json/clwc/v1/settings
Vom Browser aus kannst du wp.apiFetch auf die gleiche Weise verwenden:
wp.apiFetch( {
path: '/clwc/v1/settings',
method: 'POST',
data: { login_button_text: 'Sign in' },
} );
Das Plugin bereinigt jeden Wert, bevor es ihn speichert. Ein Wert vom falschen Typ wird übersprungen oder als leer gespeichert, und die Anfrage ist trotzdem erfolgreich.
| Felder | Akzeptierte Werte und Handhabung |
|---|---|
Farbfelder: left_panel_bg, left_panel_text, right_panel_bg, right_panel_text, button_bg, button_text, button_hover_bg, link_color, link_hover_color, input_border, input_focus, promo_button_bg, promo_button_text_color, promo_button_hover_bg, promo_button_border | Eine Hex-Farbe wie #3b82f6. Alles andere wird als leer gespeichert. |
URL-Felder: logo_url, promo_button_url | Eine gültige URL. Das Plugin bereinigt sie vor dem Speichern als URL. |
template | Einer von template-1, template-2, template-3, template-4, template-5. Andere Werte werden ignoriert. |
promo_enabled, enable_rotation | yes oder no. Andere Werte werden ignoriert. |
mobile_promo_display | hide oder stack. Andere Werte werden ignoriert. |
Textfelder: login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_text | Einfacher Text. HTML-Tags werden entfernt. |
promo_content | Text mit einfachem HTML wie <br>, <p> und <strong>. Unsicheres HTML wird entfernt. |
rotation_items | Eine Liste von Elementen. Jedes Element kann heading, content, button_text, button_url und image_url enthalten. Das Senden dieses Feldes ersetzt die gesamte gespeicherte Liste. |
Fehlerbehebung
manage_woocommerce angemeldet. Überprüfe, ob dein Anwendungspasswort zu einem Administrator oder Shop-Manager gehört. Überprüfe für Anfragen aus dem Browser, ob du einen gültigen X-WP-Nonce-Header sendest.woocommerce_login_redirect ändert die URL nach deiner. Überprüfe auch, ob die URL zu deiner eigenen Website gehört. Das Plugin leitet Kunden zum "Mein Konto"-Bereich weiter, wenn die endgültige URL auf eine Domain verweist, die WordPress nicht zulässt.add_filter() Aufruf benötigt am Ende 10, 2, damit WordPress beide Parameter an Ihre Funktion übergibt.#3b82f6 oder #fff. Farbnamen wie red und Werte wie rgb(0,0,0) werden als leer gespeichert.clwc_login_head für das <head>-Tag und clwc_login_footer oder clwc_login_enqueue_scripts für das Ende der Seite.Häufig gestellte Fragen
woocommerce_login_redirect.manage_woocommerce-Berechtigung, und Shopmanager haben diese standardmäßig.functions.php Ihres Child-Themes hinzu. Fügen Sie ihn nicht in die eigenen Dateien des Plugins ein, da diese bei Plugin-Updates überschrieben werden.Benötigen Sie Hilfe?
Custom Login for WooCommerce ist ein Premium-Plugin. Wenn Sie Hilfe bei einer bestimmten Anpassung benötigen, öffnen Sie ein Support-Ticket und unser Team kann Sie auf den richtigen Hook für Ihren Anwendungsfall hinweisen.

