Visser Labs – Plugin WooCommerce
  1. Casa
  2. Knowledge Base
  3. Accesso personalizzato per WooCommerce
  4. Hook e filtri disponibili in Custom Login per WooCommerce

Hook e filtri disponibili in Custom Login per WooCommerce

Vuoi che i clienti atterrino su una pagina specifica dopo aver effettuato l'accesso, o hai bisogno di aggiungere un link o uno script alla pagina di login. Custom Login for WooCommerce ti fornisce hook per entrambi, così non dovrai modificare i file del plugin. Ha anche un endpoint REST API che legge e aggiorna le impostazioni del plugin dal codice.

Questo articolo copre il filtro clwc_login_redirect, le action clwc_after_login_form e clwc_login_footer, e l'endpoint REST API /settings. Elenca anche tre hook più piccoli in una breve tabella. La configurazione della pagina di login stessa è trattata in Introduzione a Custom Login for WooCommerce.

Questo è un riferimento per sviluppatori. Si presume che tu sia a tuo agio nell'aggiungere PHP tramite un plugin personalizzato o il file functions.php del tuo child theme. Se gli hook ti sono nuovi, inizia con il Manuale dei plugin di WordPress sugli hook.

Prerequisiti

RequisitoDettagli
PluginCustom Login for WooCommerce 1.0.3 o versioni successive, installato e attivo
WooCommerceVersione 6.0 o successiva, installata e attiva
AccessoUn modo per aggiungere codice PHP, come un plugin personalizzato o un child theme
Accesso alla REST APIUn account con la capacità manage_woocommerce per l'endpoint REST API

Come gli hook si inseriscono nella pagina di login

Il plugin serve la tua pagina /login dal suo template standalone. Quel template non carica l'header o il footer del tuo tema, e non chiama wp_head() o wp_footer(). Quindi una callback aggiunta a wp_head o wp_footer non viene mai eseguita su questa pagina. Usa invece gli hook del plugin qui sotto.

Tieni presente che il filtro di reindirizzamento viene eseguito alla sottomissione del modulo, mentre le due action vengono eseguite quando la pagina di login viene visualizzata.

Filtro: clwc_login_redirect

Questo filtro cambia la destinazione di un cliente subito dopo un login riuscito. Non viene eseguito quando un login fallisce.

apply_filters( 'clwc_login_redirect', $redirect_to, $user );
ParametroTipoDescrizione
$redirect_tostringaL'URL verso cui il cliente sta per essere inviato
$userWP_UserL'account che ha appena effettuato l'accesso

Restituisci l'URL desiderato. Il valore iniziale di $redirect_to è il valore redirect_to passato alla pagina di login, ad esempio tuonegozioweb.com/login/?redirect_to=.... Se non ce n'è uno, è l'URL della pagina Il mio account di WooCommerce.

Ecco cosa succede dopo che la tua callback restituisce:

  1. Il filtro woocommerce_login_redirect di WooCommerce viene eseguito successivamente. Qualsiasi callback su quel filtro vede il tuo risultato e può modificarlo di nuovo.
  2. Il plugin controlla l'URL finale. Se punta a un dominio diverso che WordPress non consente, il plugin invia il cliente a Il mio account invece.
  3. Il plugin reindirizza il cliente.

Poiché woocommerce_login_redirect viene eseguito dopo clwc_login_redirect, un altro plugin su quel filtro può sovrascrivere il tuo reindirizzamento. Se il tuo reindirizzamento sembra essere ignorato, controlla altri plugin che si agganciano a woocommerce_login_redirect.

Esempio: invia i gestori del negozio alla 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 );

Il 10 è la priorità della callback e il 2 indica a WordPress che la tua callback accetta due parametri. Senza il 2, non ricevi $user.

Entrambe le azioni ti consentono di inserire il tuo HTML nella pagina di accesso. Nessuna delle due passa parametri, quindi la tua callback non necessita di argomenti. Esegui l'output del tuo contenuto con echo.

AzioneDove viene attivata
clwc_after_login_formSubito dopo il tag </form> di chiusura, ancora all'interno del pannello del modulo di accesso. Il contenuto appare sotto il modulo.
clwc_login_footerDopo l'intero layout a due pannelli, verso la fine della pagina. Il contenuto non si trova all'interno di nessuno dei due pannelli.

Esempio: aggiungi un link sotto il modulo di accesso

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

Esempio: aggiungi una riga di testo al piè di pagina

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

clwc_login_footer viene attivata al di fuori del pannello del modulo, quindi il tuo CSS decide dove appare il contenuto. Per contenuti che appartengono al modulo, usa clwc_after_login_form.

Altri hook nella pagina di accesso

Questi hook sono più piccoli e meno comuni. Funzionano allo stesso modo delle azioni e dei filtri sopra.

HookTipoCosa fa
clwc_logout_redirectFiltroModifica dove i clienti vanno dopo aver effettuato il logout. Riceve l'URL predefinito, che è /login/ con l'aggiunta di ?logged_out=true, e restituisce l'URL desiderato.
clwc_login_headAzioneViene attivato all'interno del tag <head> della pagina, dopo gli stili del plugin. Usalo per aggiungere un foglio di stile o un meta tag.
clwc_login_enqueue_scriptsAzioneViene attivato verso la fine della pagina. Usalo per accodare script per la pagina di accesso.

Il modulo di accesso attiva anche gli hook di accesso standard di WooCommerce: woocommerce_login_form_start, woocommerce_login_form e woocommerce_login_form_end. Ecco perché la maggior parte dei plugin CAPTCHA e di sicurezza che funzionano sul modulo di accesso di WooCommerce funzionano anche qui.

REST API: endpoint delle impostazioni

Il plugin ha un endpoint REST API per le sue impostazioni. Ti consente di leggere le impostazioni correnti o di aggiornarle dal codice, ad esempio quando imposti molti negozi da un unico script.

/wp-json/clwc/v1/settings
MetodoCosa fa
GETRestituisce tutte le impostazioni, più l'elenco di rotation_items
POSTAggiorna le impostazioni che invii e restituisce tutte le impostazioni

Chi può usarlo

Entrambi i metodi richiedono un account connesso con la capacità manage_woocommerce. Ciò include amministratori e gestori del negozio. Chiunque altro riceve una risposta 401 o 403.

Per una richiesta dal browser mentre sei connesso, invia l'intestazione X-WP-Nonce con un nonce wp_rest. Per una richiesta da fuori WordPress, usa una password per applicazioni con autenticazione di base.

Leggi le impostazioni

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

La risposta è un oggetto JSON. Qualsiasi impostazione non ancora salvata viene restituita con il suo valore predefinito, eccetto logo_url, che viene omesso dalla risposta finché non salvi un URL del logo.

Aggiorna le impostazioni

Invia un corpo JSON con solo i campi che desideri modificare. I campi che ometti rimangono invariati.

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

Dal browser, puoi usare wp.apiFetch nello stesso modo:

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

Il plugin pulisce ogni valore prima di salvarlo. Un valore del tipo sbagliato viene saltato o salvato come vuoto, e la richiesta ha comunque successo.

CampiValori accettati e gestione
Campi colore: 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_borderUn colore esadecimale come #3b82f6. Qualsiasi altra cosa viene salvata come vuoto.
Campi URL: logo_url, promo_button_urlUn URL valido. Il plugin lo pulisce come URL prima di salvarlo.
modelloUno tra template-1, template-2, template-3, template-4, template-5. Altri valori vengono ignorati.
promo_enabled, enable_rotationyes o no. Altri valori vengono ignorati.
mobile_promo_displayhide o stack. Altri valori vengono ignorati.
Campi di testo: login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_textTesto normale. I tag HTML vengono rimossi.
promo_contentTesto con HTML di base, come <br>, <p> e <strong>. L'HTML non sicuro viene rimosso.
rotation_itemsUn elenco di elementi. Ogni elemento può avere heading, content, button_text, button_url e image_url. L'invio di questo campo sostituisce l'intero elenco salvato.

I campi non presenti nella tabella vengono ignorati. Inoltre, rotation_items sostituisce l'intero elenco salvato ogni volta che lo invii, quindi includi ogni elemento che desideri conservare.

Risoluzione dei problemi

L'API REST restituisce un errore 401 o 403
La richiesta non è effettuata da un account con la capacità manage_woocommerce. Verifica che la tua password dell'applicazione appartenga a un amministratore o a un responsabile del negozio. Per le richieste dal browser, verifica di inviare un'intestazione X-WP-Nonce valida.
La mia callback clwc_login_redirect viene eseguita, ma i clienti continuano ad andare alla pagina sbagliata
Un altro plugin su woocommerce_login_redirect sta modificando l'URL dopo il tuo. Verifica anche che l'URL appartenga al tuo sito. Il plugin invia i clienti a "Il mio account" quando l'URL finale punta a un dominio che WordPress non consente.
La mia callback su clwc_login_redirect non riceve $user
La tua chiamata add_filter() necessita di 10, 2 alla fine, in modo che WordPress passi entrambi i parametri alla tua funzione.
Un colore che ho inviato tramite l'API REST è stato salvato come vuoto
Il plugin accetta solo colori esadecimali come #3b82f6 o #fff. Nomi di colori come red e valori come rgb(0,0,0) vengono salvati come vuoti.
Il mio codice su wp_head o wp_footer non viene eseguito nella pagina di accesso
La pagina di accesso non chiama questi hook. Usa clwc_login_head per il tag <head> e clwc_login_footer o clwc_login_enqueue_scripts per la fine della pagina.

Domande frequenti

Questi hook funzionano sul modulo di accesso standard di WooCommerce?
No. Vengono attivati solo sulla pagina di accesso del plugin. Il modulo di accesso standard di WooCommerce continua a utilizzare gli hook di WooCommerce, come woocommerce_login_redirect.
Un responsabile del negozio può utilizzare l'endpoint dell'API REST?
Sì. L'endpoint controlla la capacità manage_woocommerce e i responsabili del negozio ce l'hanno per impostazione predefinita.
Gli hook necessitano di una licenza attivata?
No. Gli hook e l'endpoint dell'API REST non controllano la tua licenza. La chiave di licenza viene utilizzata per gli aggiornamenti del plugin.
Dove devo aggiungere il codice?
Aggiungilo a un piccolo plugin personalizzato o al file functions.php del tuo child theme. Non aggiungerlo ai file del plugin stesso, perché gli aggiornamenti del plugin li sovrascrivono.

Serve aiuto?

Custom Login for WooCommerce è un plugin premium, quindi se hai bisogno di aiuto con una personalizzazione specifica, apri un ticket di supporto e il nostro team potrà indicarti l'hook giusto per il tuo caso d'uso.

Questo articolo è stato utile?

Articoli Correlati

Risorse e Aiuto