Visser Labs – Plugins WooCommerce

  1. Accueil
  2. Base de connaissances
  3. Connexion personnalisée pour WooCommerce
  4. Crochets et filtres disponibles dans Custom Login for WooCommerce

Crochets et filtres disponibles dans Custom Login for WooCommerce

Vous souhaitez que les clients atterrissent sur une page spécifique après leur connexion, ou vous avez besoin d'ajouter un lien ou un script à la page de connexion. Custom Login for WooCommerce vous offre des hooks pour les deux, vous évitant ainsi de modifier les fichiers du plugin. Il dispose également d'un point d'accès API REST qui lit et met à jour les paramètres du plugin à partir du code.

Cet article couvre le filtre clwc_login_redirect, les actions clwc_after_login_form et clwc_login_footer, ainsi que le point d'accès API REST /settings. Il liste également trois hooks plus petits dans un tableau concis. La configuration de la page de connexion elle-même est abordée dans Démarrage avec Custom Login for WooCommerce.

Ceci est une référence développeur. Elle suppose que vous êtes à l'aise pour ajouter du PHP via un plugin personnalisé ou le fichier functions.php de votre thème enfant. Si les hooks vous sont nouveaux, commencez par le Manuel des plugins WordPress sur les hooks.

Prérequis

ExigenceDétails
PluginCustom Login for WooCommerce 1.0.3 ou version ultérieure, installé et actif
WooCommerceVersion 6.0 ou ultérieure, installée et active
AccèsUn moyen d'ajouter du code PHP, tel qu'un plugin personnalisé ou un thème enfant
Accès à l'API RESTUn compte avec la capacité manage_woocommerce pour le point d'accès API REST

Comment les hooks s'intègrent à la page de connexion

Le plugin sert votre page /login à partir de son propre modèle autonome. Ce modèle ne charge ni l'en-tête ni le pied de page de votre thème, et n'appelle pas wp_head() ni wp_footer(). Par conséquent, une fonction de rappel ajoutée à wp_head ou wp_footer ne s'exécute jamais sur cette page. Utilisez plutôt les hooks propres au plugin ci-dessous.

Gardez à l'esprit que le filtre de redirection s'exécute lors de la soumission du formulaire, tandis que les deux actions s'exécutent lorsque la page de connexion est affichée.

Filtre : clwc_login_redirect

Ce filtre modifie la destination d'un client juste après une connexion réussie. Il ne s'exécute pas en cas d'échec de connexion.

apply_filters( 'clwc_login_redirect', $redirect_to, $user );
ParamètreTypeDescription
$redirect_tochaîneL'URL vers laquelle le client est sur le point d'être envoyé
$userWP_UserLe compte qui vient de se connecter

Retournez l'URL souhaitée. La valeur initiale de $redirect_to est la valeur redirect_to passée à la page de connexion, par exemple votre-boutique.com/login/?redirect_to=.... S'il n'y en a pas, c'est l'URL de la page Mon compte de votre WooCommerce.

Voici ce qui se passe après le retour de votre fonction de rappel :

  1. Le filtre woocommerce_login_redirect de WooCommerce s'exécute ensuite. Toute fonction de rappel sur ce filtre voit votre résultat et peut le modifier à nouveau.
  2. Le plugin vérifie l'URL finale. Si elle pointe vers un autre domaine que WordPress n'autorise pas, le plugin envoie le client vers Mon compte à la place.
  3. Le plugin redirige le client.

Étant donné que woocommerce_login_redirect s'exécute après clwc_login_redirect, un autre plugin sur ce filtre peut remplacer votre redirection. Si votre redirection semble être ignorée, vérifiez les autres plugins qui s'accrochent à woocommerce_login_redirect.

Exemple : envoyer les gérants de boutique vers le tableau de bord

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

Le 10 est la priorité du rappel, et le 2 indique à WordPress que votre rappel accepte deux paramètres. Sans le 2, vous ne recevez pas $user.

Les deux actions vous permettent d'afficher votre propre HTML sur la page de connexion. Aucune des deux ne passe de paramètres, donc votre rappel n'a pas besoin d'arguments. Affichez votre contenu avec echo.

ActionOù elle se déclenche
clwc_after_login_formDirectement après la balise </form> fermante, toujours à l'intérieur du panneau du formulaire de connexion. Le contenu apparaît sous le formulaire.
clwc_login_footerAprès l'ensemble de la disposition à deux panneaux, vers la fin de la page. Le contenu n'est dans aucun des panneaux.

Exemple : ajouter un lien sous le formulaire de connexion

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

Exemple : ajouter une ligne de texte au pied de page

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

clwc_login_footer se déclenche en dehors du panneau du formulaire, donc votre propre CSS décide où le contenu apparaît. Pour le contenu qui appartient au formulaire, utilisez clwc_after_login_form.

Autres hooks sur la page de connexion

Ces hooks sont plus petits et moins courants. Ils fonctionnent de la même manière que les actions et filtres ci-dessus.

HookTypeCe que ça fait
clwc_logout_redirectFiltreChange où les clients vont après s'être déconnectés. Reçoit l'URL par défaut, qui est /login/ avec ?logged_out=true ajouté, et renvoie l'URL que vous souhaitez.
clwc_login_headActionSe déclenche à l'intérieur de la balise <head> de la page, après les styles du plugin. Utilisez-le pour ajouter une feuille de style ou une balise meta.
clwc_login_enqueue_scriptsActionSe déclenche vers la fin de la page. Utilisez-le pour mettre en file d'attente des scripts pour la page de connexion.

Le formulaire de connexion déclenche également les hooks de connexion standard de WooCommerce : woocommerce_login_form_start, woocommerce_login_form et woocommerce_login_form_end. C'est pourquoi la plupart des plugins CAPTCHA et de sécurité qui fonctionnent sur le formulaire de connexion WooCommerce fonctionnent également ici.

API REST : point de terminaison des paramètres

Le plugin dispose d'un point de terminaison d'API REST pour ses paramètres. Il vous permet de lire les paramètres actuels ou de les mettre à jour à partir du code, par exemple lorsque vous configurez de nombreux magasins à partir d'un seul script.

/wp-json/clwc/v1/settings
MéthodeCe que ça fait
GETRenvoie tous les paramètres, plus la liste des rotation_items
POSTMet à jour les paramètres que vous envoyez et renvoie tous les paramètres

Qui peut l'utiliser

Les deux méthodes nécessitent un compte connecté avec la capacité manage_woocommerce. Cela inclut les administrateurs et les gérants de boutique. Toute autre personne reçoit une réponse 401 ou 403.

Pour une requête depuis le navigateur pendant que vous êtes connecté, envoyez l'en-tête X-WP-Nonce avec un nonce wp_rest. Pour une requête depuis l'extérieur de WordPress, utilisez un mot de passe d'application avec authentification de base.

Lire les paramètres

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

La réponse est un objet JSON. Tous les paramètres que vous n’avez pas encore enregistrés reviennent avec leur valeur par défaut, à l'exception de logo_url, qui est absent de la réponse jusqu'à ce que vous enregistriez une URL de logo.

Mettre à jour les paramètres

Envoyez un corps JSON avec uniquement les champs que vous souhaitez modifier. Les champs que vous omettez restent tels quels.

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

Depuis le navigateur, vous pouvez utiliser wp.apiFetch de la même manière :

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

Le plugin nettoie chaque valeur avant de l'enregistrer. Une valeur du mauvais type est ignorée ou enregistrée comme vide, et la requête réussit quand même.

ChampsValeurs acceptées et traitement
Champs de couleur : 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_borderUne couleur hexadécimale telle que #3b82f6. Tout le reste est enregistré comme vide.
Champs d'URL : logo_url, promo_button_urlUne URL valide. Le plugin la nettoie en tant qu'URL avant de l'enregistrer.
templateL'un de template-1, template-2, template-3, template-4, template-5. Les autres valeurs sont ignorées.
promo_enabled, enable_rotationyes ou no. Les autres valeurs sont ignorées.
mobile_promo_displayhide ou stack. Les autres valeurs sont ignorées.
Champs de texte : login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_textTexte brut. Les balises HTML sont supprimées.
promo_contentTexte avec HTML de base, tel que <br>, <p> et <strong>. Le HTML non sécurisé est supprimé.
rotation_itemsUne liste d'éléments. Chaque élément peut avoir heading, content, button_text, button_url et image_url. L'envoi de ce champ remplace toute la liste enregistrée.

Les champs qui ne sont pas dans le tableau sont ignorés. De plus, rotation_items remplace toute la liste enregistrée à chaque fois que vous l'envoyez, alors incluez tous les éléments que vous souhaitez conserver.

Dépannage

L'API REST renvoie une erreur 401 ou 403
La requête n'est pas connectée en tant que compte ayant la capacité manage_woocommerce. Vérifiez que votre mot de passe d'application appartient à un administrateur ou à un responsable de boutique. Pour les requêtes provenant du navigateur, vérifiez que vous envoyez un en-tête X-WP-Nonce valide.
Mon callback clwc_login_redirect s'exécute, mais les clients sont toujours redirigés vers la mauvaise page
Un autre plugin sur woocommerce_login_redirect modifie l'URL après la vôtre. Vérifiez également que l'URL appartient à votre propre site. Le plugin redirige les clients vers Mon compte lorsque l'URL finale pointe vers un domaine que WordPress n'autorise pas.
Ma fonction de rappel sur clwc_login_redirect ne reçoit pas $user
Votre appel add_filter() a besoin de 10, 2 à la fin, pour que WordPress passe les deux paramètres à votre fonction.
Une couleur que j'ai envoyée via l'API REST s'est enregistrée comme vide
Le plugin n'accepte que les couleurs hexadécimales telles que #3b82f6 ou #fff. Les noms de couleurs comme red et les valeurs comme rgb(0,0,0) sont enregistrés comme vides.
Mon code sur wp_head ou wp_footer ne s'exécute pas sur la page de connexion
La page de connexion n'appelle pas ces hooks. Utilisez clwc_login_head pour la balise <head>, et clwc_login_footer ou clwc_login_enqueue_scripts pour la fin de la page.

Questions fréquemment posées

Ces hooks fonctionnent-ils sur le formulaire de connexion WooCommerce standard ?
Non. Ils ne s'exécutent que sur la page de connexion du plugin. Le formulaire de connexion WooCommerce standard continue d'utiliser les hooks WooCommerce, tels que woocommerce_login_redirect.
Un gérant de boutique peut-il utiliser le point d'accès API REST ?
Oui. Le point d'accès vérifie la capacité manage_woocommerce, et les gérants de boutique l'ont par défaut.
Les hooks nécessitent-ils une licence activée ?
Non. Les hooks et le point d'accès API REST ne vérifient pas votre licence. La clé de licence est utilisée pour les mises à jour du plugin.
Où dois-je ajouter le code ?
Ajoutez-le à un petit plugin personnalisé ou au fichier functions.php de votre thème enfant. Ne l'ajoutez pas aux fichiers du plugin lui-même, car les mises à jour du plugin les écrasent.

Besoin d'aide ?

Custom Login for WooCommerce est un plugin premium, donc si vous avez besoin d'aide pour une personnalisation spécifique, ouvrez un ticket de support et notre équipe pourra vous indiquer le hook approprié pour votre cas d'utilisation.

Cet article vous a-t-il été utile ?

Articles Liés

Ressources et aide