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.
Prérequis
| Exigence | Détails |
|---|---|
| Plugin | Custom Login for WooCommerce 1.0.3 ou version ultérieure, installé et actif |
| WooCommerce | Version 6.0 ou ultérieure, installée et active |
| Accès | Un moyen d'ajouter du code PHP, tel qu'un plugin personnalisé ou un thème enfant |
| Accès à l'API REST | Un 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ètre | Type | Description |
|---|---|---|
$redirect_to | chaîne | L'URL vers laquelle le client est sur le point d'être envoyé |
$user | WP_User | Le 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 :
- Le filtre
woocommerce_login_redirectde WooCommerce s'exécute ensuite. Toute fonction de rappel sur ce filtre voit votre résultat et peut le modifier à nouveau. - 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.
- Le plugin redirige le client.
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.
Actions : clwc_after_login_form et clwc_login_footer
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.
| Action | Où elle se déclenche |
|---|---|
clwc_after_login_form | Directement 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_footer | Aprè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>';
} );
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.
| Hook | Type | Ce que ça fait |
|---|---|---|
clwc_logout_redirect | Filtre | Change 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_head | Action | Se 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_scripts | Action | Se 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éthode | Ce que ça fait |
|---|---|
GET | Renvoie tous les paramètres, plus la liste des rotation_items |
POST | Met à 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.
| Champs | Valeurs 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_border | Une couleur hexadécimale telle que #3b82f6. Tout le reste est enregistré comme vide. |
Champs d'URL : logo_url, promo_button_url | Une URL valide. Le plugin la nettoie en tant qu'URL avant de l'enregistrer. |
template | L'un de template-1, template-2, template-3, template-4, template-5. Les autres valeurs sont ignorées. |
promo_enabled, enable_rotation | yes ou no. Les autres valeurs sont ignorées. |
mobile_promo_display | hide 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_text | Texte brut. Les balises HTML sont supprimées. |
promo_content | Texte avec HTML de base, tel que <br>, <p> et <strong>. Le HTML non sécurisé est supprimé. |
rotation_items | Une 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. |
Dépannage
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.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.add_filter() a besoin de 10, 2 à la fin, pour que WordPress passe les deux paramètres à votre fonction.#3b82f6 ou #fff. Les noms de couleurs comme red et les valeurs comme rgb(0,0,0) sont enregistrés comme vides.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
woocommerce_login_redirect.manage_woocommerce, et les gérants de boutique l'ont par défaut.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.

