Visser Labs – WooCommerce Plugins
  1. Home
  2. Kennisbank
  3. Aangepaste login voor WooCommerce
  4. Beschikbare hooks en filters in Custom Login voor WooCommerce

Beschikbare hooks en filters in Custom Login voor WooCommerce

U wilt dat klanten na het inloggen op een specifieke pagina terechtkomen, of u moet een link of een script toevoegen aan de inlogpagina. Custom Login for WooCommerce biedt u hooks voor beide, zodat u de pluginbestanden niet hoeft te bewerken. Het heeft ook een REST API-eindpunt dat de instellingen van de plugin vanuit code leest en bijwerkt.

Dit artikel behandelt de clwc_login_redirect filter, de clwc_after_login_form en clwc_login_footer acties, en het /settings REST API-eindpunt. Het bevat ook een korte tabel met drie kleinere hooks. Het instellen van de inlogpagina zelf wordt behandeld in Aan de slag met Custom Login for WooCommerce.

Dit is een ontwikkelaarsreferentie. Het gaat ervan uit dat u bekend bent met het toevoegen van PHP via een aangepaste plugin of het functions.php bestand van uw child theme. Als hooks nieuw voor u zijn, begin dan met de WordPress Plugin Handbook over hooks.

Vereisten

VereisteDetails
PluginCustom Login for WooCommerce 1.0.3 of hoger, geïnstalleerd en actief
WooCommerceVersie 6.0 of hoger, geïnstalleerd en actief
ToegangEen manier om PHP-code toe te voegen, zoals een aangepaste plugin of een child theme
REST API-toegangEen account met de manage_woocommerce machtiging voor het REST API-eindpunt

Hoe de hooks passen in de inlogpagina

De plugin serveert uw /login pagina vanuit zijn eigen zelfstandige template. Dat template laadt niet de header of footer van uw thema en roept wp_head() of wp_footer() niet aan. Dus een callback die is toegevoegd aan wp_head of wp_footer wordt nooit op deze pagina uitgevoerd. Gebruik in plaats daarvan de eigen hooks van de plugin hieronder.

Houd er rekening mee dat de redirect filter wordt uitgevoerd bij het indienen van het formulier, terwijl de twee acties worden uitgevoerd wanneer de inlogpagina wordt weergegeven.

Filter: clwc_login_redirect

Deze filter wijzigt waar een klant naartoe gaat direct na een succesvolle login. Het wordt niet uitgevoerd wanneer een login mislukt.

apply_filters( 'clwc_login_redirect', $redirect_to, $user );
ParameterTypeBeschrijving
$redirect_tostringDe URL waar de klant naartoe wordt gestuurd
$userWP_UserHet account dat zojuist is ingelogd

Retourneer de gewenste URL. De beginwaarde van $redirect_to is de redirect_to waarde die aan de inlogpagina is doorgegeven, bijvoorbeeld uwwinkel.com/login/?redirect_to=.... Als er geen is, is het de URL van de accountpagina van uw WooCommerce.

Dit is wat er gebeurt nadat uw callback retourneert:

  1. WooCommerce's eigen woocommerce_login_redirect filter wordt hierna uitgevoerd. Elke callback op die filter ziet uw resultaat en kan het opnieuw wijzigen.
  2. De plugin controleert de uiteindelijke URL. Als deze verwijst naar een ander domein dat WordPress niet toestaat, stuurt de plugin de klant naar Mijn account.
  3. De plugin stuurt de klant door.

Omdat woocommerce_login_redirect na clwc_login_redirect wordt uitgevoerd, kan een andere plugin op die filter uw redirect overschrijven. Als uw redirect lijkt te worden genegeerd, controleer dan op andere plugins die zich koppelen aan woocommerce_login_redirect.

Voorbeeld: stuur winkelbeheerders naar het dashboard

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 );

De 10 is de prioriteit van de callback, en de 2 vertelt WordPress dat je callback twee parameters accepteert. Zonder de 2 ontvang je $user niet.

Beide acties laten je je eigen HTML op de inlogpagina afdrukken. Geen van beide geeft parameters door, dus je callback heeft geen argumenten nodig. Geef je inhoud weer met echo.

ActieWaar het wordt uitgevoerd
clwc_after_login_formDirect na de sluitende </form> tag, nog steeds binnen het inlogformulierpaneel. Inhoud verschijnt onder het formulier.
clwc_login_footerNa de hele indeling met twee panelen, nabij het einde van de pagina. Inhoud is niet binnen een van de panelen.

Voorbeeld: voeg een link toe onder het inlogformulier

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>';
} );

Voorbeeld: voeg een tekstregel toe aan de paginavoettekst

add_action( 'clwc_login_footer', function () {
	echo '<p style="text-align:center;">Need help? Call us on 1300 000 000.</p>';
} );

clwc_login_footer wordt buiten het formulierpaneel uitgevoerd, dus je eigen CSS bepaalt waar de inhoud verschijnt. Gebruik clwc_after_login_form voor inhoud die bij het formulier hoort.

Andere hooks op de inlogpagina

Deze hooks zijn kleiner en minder gebruikelijk. Ze werken op dezelfde manier als de bovenstaande acties en filters.

HookTypeWat het doet
clwc_logout_redirectFilterWijzigt waar klanten naartoe gaan nadat ze zijn uitgelogd. Ontvangt de standaard-URL, die /login/ is met ?logged_out=true toegevoegd, en retourneert de gewenste URL.
clwc_login_headActieWordt uitgevoerd binnen de <head> tag van de pagina, na de stijlen van de plugin. Gebruik het om een stylesheet of metatag toe te voegen.
clwc_login_enqueue_scriptsActieWordt uitgevoerd nabij het einde van de pagina. Gebruik het om scripts voor de inlogpagina te enqueuen.

Het inlogformulier voert ook de standaard inlog-hooks van WooCommerce uit: woocommerce_login_form_start, woocommerce_login_form en woocommerce_login_form_end. Daarom werken de meeste CAPTCHA- en beveiligingsplugins die op het WooCommerce-inlogformulier werken hier ook.

REST API: instellingen-eindpunt

De plugin heeft één REST API-eindpunt voor zijn instellingen. Hiermee kun je de huidige instellingen lezen of ze vanuit code bijwerken, bijvoorbeeld wanneer je veel winkels vanuit één script instelt.

/wp-json/clwc/v1/settings
MethodeWat het doet
GETRetourneert alle instellingen, plus de lijst met rotation_items
POSTWerkt de instellingen bij die je verzendt en retourneert alle instellingen

Wie kan het gebruiken

Beide methoden vereisen een ingelogd account met de manage_woocommerce-mogelijkheid. Dat omvat beheerders en winkelbeheerders. Iedereen anders krijgt een 401- of 403-antwoord.

Voor een verzoek vanuit de browser terwijl je bent ingelogd, stuur de X-WP-Nonce-header met een wp_rest-nonce. Gebruik voor een verzoek van buiten WordPress een toepassingswachtwoord met basisauthenticatie.

Lees de instellingen

curl -u "admin:APPLICATION_PASSWORD" https://yourstore.com/wp-json/clwc/v1/settings

Het antwoord is een JSON-object. Elke instelling die u nog niet hebt opgeslagen, wordt teruggestuurd met de standaardwaarde, behalve logo_url, die ontbreekt in het antwoord totdat u een logo-URL opslaat.

Werk de instellingen bij

Verstuur een JSON-body met alleen de velden die u wilt wijzigen. Velden die u weglaat, blijven zoals ze zijn.

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

Vanuit de browser kunt u wp.apiFetch op dezelfde manier gebruiken:

wp.apiFetch( {
	path: '/clwc/v1/settings',
	method: 'POST',
	data: { login_button_text: 'Sign in' },
} );

De plugin reinigt elke waarde voordat deze wordt opgeslagen. Een waarde van het verkeerde type wordt overgeslagen of leeg opgeslagen, en het verzoek slaagt nog steeds.

VeldenGeaccepteerde waarden en verwerking
Kleurvelden: 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_borderEen hexadecimale kleur zoals #3b82f6. Al het andere wordt leeg opgeslagen.
URL-velden: logo_url, promo_button_urlEen geldige URL. De plugin reinigt deze als een URL voordat deze wordt opgeslagen.
templateEen van template-1, template-2, template-3, template-4, template-5. Andere waarden worden genegeerd.
promo_enabled, enable_rotationyes of no. Andere waarden worden genegeerd.
mobile_promo_displayhide of stack. Andere waarden worden genegeerd.
Tekstvelden: login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_textPlatte tekst. HTML-tags worden verwijderd.
promo_contentTekst met basis-HTML, zoals <br>, <p>, en <strong>. Onveilige HTML wordt verwijderd.
rotation_itemsEen lijst met items. Elk item kan heading, content, button_text, button_url, en image_url bevatten. Het verzenden van dit veld vervangt de hele opgeslagen lijst.

Velden die niet in de tabel staan, worden genegeerd. Bovendien vervangt rotation_items de hele opgeslagen lijst elke keer dat u deze verzendt, dus neem elk item op dat u wilt behouden.

Probleemoplossing

De REST API retourneert een 401- of 403-fout
Het verzoek is niet ingelogd als een account met de manage_woocommerce-mogelijkheid. Controleer of uw applicatie-wachtwoord toebehoort aan een beheerder of winkelmanager. Controleer voor verzoeken vanuit de browser of u een geldige X-WP-Nonce-header verzendt.
Mijn clwc_login_redirect-callback wordt uitgevoerd, maar klanten gaan nog steeds naar de verkeerde pagina
Een andere plugin op woocommerce_login_redirect wijzigt de URL na de uwe. Controleer ook of de URL naar uw eigen site verwijst. De plugin stuurt klanten naar Mijn account wanneer de uiteindelijke URL verwijst naar een domein dat WordPress niet toestaat.
Mijn callback op clwc_login_redirect ontvangt $user niet
Je add_filter() aanroep heeft 10, 2 aan het einde nodig, zodat WordPress beide parameters doorgeeft aan je functie.
Een kleur die ik via de REST API heb verzonden, is opgeslagen als leeg
De plugin accepteert alleen hexadecimale kleuren zoals #3b82f6 of #fff. Kleurnamen zoals red en waarden zoals rgb(0,0,0) worden opgeslagen als leeg.
Mijn code op wp_head of wp_footer werkt niet op de inlogpagina
De inlogpagina roept die hooks niet aan. Gebruik clwc_login_head voor de <head> tag, en clwc_login_footer of clwc_login_enqueue_scripts voor het einde van de pagina.

Veelgestelde vragen

Werken deze hooks op het standaard WooCommerce inlogformulier?
Nee. Ze worden alleen geactiveerd op de eigen inlogpagina van de plugin. Het standaard WooCommerce inlogformulier blijft de WooCommerce hooks gebruiken, zoals woocommerce_login_redirect.
Kan een shopmanager het REST API-eindpunt gebruiken?
Ja. Het eindpunt controleert de manage_woocommerce-mogelijkheid, en shopmanagers hebben deze standaard.
Hebben de hooks een geactiveerde licentie nodig?
Nee. De hooks en het REST API-eindpunt controleren je licentie niet. De licentiesleutel wordt gebruikt voor plugin-updates.
Waar voeg ik de code toe?
Voeg het toe aan een kleine aangepaste plugin of het functions.php-bestand van je child theme. Voeg het niet toe aan de eigen bestanden van de plugin, omdat plugin-updates deze overschrijven.

Hulp nodig?

Custom Login for WooCommerce is een premium plugin, dus als je hulp nodig hebt met een specifieke aanpassing, open een supportticket en ons team kan je wijzen op de juiste hook voor jouw use case.

Was dit artikel nuttig?

Gerelateerde artikelen

Bronnen & Hulp