Visser Labs – WooCommerce Plugins

  1. Startseite
  2. Wissensdatenbank
  3. Benutzerdefinierte Anmeldung für WooCommerce
  4. Verfügbare Hooks und Filter in Custom Login für WooCommerce

Verfügbare Hooks und Filter in Custom Login für WooCommerce

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.

Dies ist eine Entwicklerreferenz. Sie setzt voraus, dass Sie mit dem Hinzufügen von PHP über ein benutzerdefiniertes Plugin oder die functions.php-Datei Ihres Child-Themes vertraut sind. Wenn Hooks neu für Sie sind, beginnen Sie mit dem WordPress Plugin Handbook zu Hooks.

Voraussetzungen

AnforderungDetails
PluginCustom Login für WooCommerce 1.0.3 oder neuer, installiert und aktiv
WooCommerceVersion 6.0 oder neuer, installiert und aktiv
ZugriffEine Möglichkeit, PHP-Code hinzuzufügen, wie z. B. ein benutzerdefiniertes Plugin oder ein Child-Theme
REST API-ZugriffEin 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 );
ParameterTypBeschreibung
$redirect_tostringDie URL, zu der der Kunde gerade gesendet wird
$userWP_UserDas 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:

  1. WooCommerce's eigener woocommerce_login_redirect Filter wird als nächstes ausgeführt. Jeder Callback für diesen Filter sieht Ihr Ergebnis und kann es erneut ändern.
  2. 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.
  3. Das Plugin leitet den Kunden weiter.

Da woocommerce_login_redirect nach clwc_login_redirect ausgeführt wird, kann ein anderes Plugin für diesen Filter Ihre Weiterleitung überschreiben. Wenn Ihre Weiterleitung ignoriert zu werden scheint, überprüfen Sie andere Plugins, die sich in woocommerce_login_redirect einklinken.

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.

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.

AktionWo sie ausgelöst wird
clwc_after_login_formDirekt nach dem schließenden </form>-Tag, immer noch innerhalb des Anmeldeformular-Panels. Der Inhalt erscheint unter dem Formular.
clwc_login_footerNach 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>';
} );

clwc_login_footer wird außerhalb des Formular-Panels ausgelöst, sodass Ihr eigenes CSS bestimmt, wo der Inhalt erscheint. Für Inhalte, die zum Formular gehören, verwenden Sie clwc_after_login_form.

Andere Hooks auf der Anmeldeseite

Diese Hooks sind kleiner und weniger gebräuchlich. Sie funktionieren genauso wie die obigen Aktionen und Filter.

HookTypWas es tut
clwc_logout_redirectFilterÄ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_headAktionWird 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_scriptsAktionWird 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
MethodeWas es tut
GETGibt alle Einstellungen sowie die Liste der rotation_items zurück
POSTAktualisiert 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.

FelderAkzeptierte 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_borderEine Hex-Farbe wie #3b82f6. Alles andere wird als leer gespeichert.
URL-Felder: logo_url, promo_button_urlEine gültige URL. Das Plugin bereinigt sie vor dem Speichern als URL.
templateEiner von template-1, template-2, template-3, template-4, template-5. Andere Werte werden ignoriert.
promo_enabled, enable_rotationyes oder no. Andere Werte werden ignoriert.
mobile_promo_displayhide 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_textEinfacher Text. HTML-Tags werden entfernt.
promo_contentText mit einfachem HTML wie <br>, <p> und <strong>. Unsicheres HTML wird entfernt.
rotation_itemsEine 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.

Felder, die nicht in der Tabelle aufgeführt sind, werden ignoriert. Außerdem ersetzt rotation_items jedes Mal die gesamte gespeicherte Liste, wenn du sie sendest. Schließe also jedes Element ein, das du behalten möchtest.

Fehlerbehebung

Die REST-API gibt einen 401- oder 403-Fehler zurück
Die Anfrage ist nicht als Konto mit der Berechtigung 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.
Mein clwc_login_redirect-Callback wird ausgeführt, aber Kunden werden immer noch auf die falsche Seite weitergeleitet
Ein anderes Plugin bei 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.
Mein Callback bei clwc_login_redirect empfängt $user nicht
Ihr add_filter() Aufruf benötigt am Ende 10, 2, damit WordPress beide Parameter an Ihre Funktion übergibt.
Eine Farbe, die ich über die REST-API gesendet habe, wurde als leer gespeichert
Das Plugin akzeptiert nur Hex-Farben wie #3b82f6 oder #fff. Farbnamen wie red und Werte wie rgb(0,0,0) werden als leer gespeichert.
Mein Code in wp_head oder wp_footer funktioniert nicht auf der Anmeldeseite
Die Anmeldeseite ruft diese Hooks nicht auf. Verwenden Sie 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

Funktionieren diese Hooks auf dem Standard-WooCommerce-Anmeldeformular?
Nein. Sie werden nur auf der eigenen Anmeldeseite des Plugins ausgelöst. Das Standard-WooCommerce-Anmeldeformular verwendet weiterhin die WooCommerce-Hooks wie woocommerce_login_redirect.
Kann ein Shopmanager den REST-API-Endpunkt verwenden?
Ja. Der Endpunkt prüft auf die manage_woocommerce-Berechtigung, und Shopmanager haben diese standardmäßig.
Benötigen die Hooks eine aktivierte Lizenz?
Nein. Die Hooks und der REST-API-Endpunkt prüfen Ihre Lizenz nicht. Der Lizenzschlüssel wird für Plugin-Updates verwendet.
Wo füge ich den Code hinzu?
Fügen Sie ihn zu einem kleinen benutzerdefinierten Plugin oder zur 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.

War dieser Artikel hilfreich?

Verwandte Artikel

Ressourcen & Hilfe