Si vous êtes nouveau sur l’écosystème de WordPress, vous trouverez peut-être un peu difficile à saisir sa souplesse. Bien sûr, il y a littéralement des dizaines de milliers de thèmes et de plugins que vous pouvez utiliser, et vous pouvez penser que WordPress est extrêmement extensible, et si vous prenez connaissance des « actions » et des « filtres » que WordPress fournit, vous serez surpris de voir ce que vous pourrez faire avec ce dernier.
Dans ce tutoriel, je vais vous guider à travers l’utilisation de filtres de WordPress pour modifier les redirections. N’oubliez pas que nous vous avons appris à créer un plugin WordPress. Vous pourrez donc utiliser ces codes dans votre plugin.
Commençons!
Exploiter la flexibilité de WordPress avec des actions et des filtres
Les « Hooks » sont, sans l’ombre d’un doute, la véritable raison de la flexibilité de WordPress. Sans le système des « hooks », les thèmes seraient beaucoup plus rigides et, plus important encore, la plupart des plugins WordPress n’existeraient même pas.
Les « Hooks » ou crochets sont destinés à faire ce à quoi leur nom renvoi : s’accrocher à des choses spécifiques. Il existe deux types de crochets, les actions et les filtres.
Les actions se déclenchent à un moment spécifique, et les filtres permettent de manipuler les données renvoyées (nous allons travailler sur les filtres dans ce tutoriel). C’est la raison pour laquelle les plugins reposent sur des crochets pour contrôler WordPress, sans oublier que certains plugins et thèmes proposent leurs propres crochets (Hooks).
La gestion des redirections pour différents scénarios
Comme promis, nous allons parler des filtres. Nous avons sept filtres sur WordPress que nous allons évoquer durant ce tutoriel.
La redirection lorsqu’un utilisateur s’inscrit
Normalement, les nouveaux utilisateurs sont redirigés vers le formulaire de connexion après une inscription régulière.
Vous pouvez avoir cependant envie de rediriger les nouveaux membres vers une page spécifique sur votre blog. Tout ce que vous avez à faire, c’est de modifier le filtre qui gère cette réduction et d’ajouter votre code.
<?php add_filter( 'registration_redirect', 'redir_new_users' ); function redir_new_users() { // change the slug below with your own page's slug return home_url( '/white-paper/' ); } ?>
La redirection lors de la connexion et ou de la déconnexion
Après chaque connexion, les utilisateurs accèdent à votre tableau de bord. Si vos utilisateurs ne doivent pas y accéder, vous pouvez les rediriger vers une autre page. Vous pouvez même faire une condition qui vérifie si l’utilisateur est un administrateur ou pas.
Dans l’exemple suivant, nous allons vérifier le rôle de l’utilisateur et rediriger les «abonnés» vers la page d’accueil:
<?php add_filter( 'login_redirect', 'send_subscribers_home', 10, 3 ); function send_subscribers_home( $location, $request, $user ) { global $user; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( 'subscriber', $user->roles ) ) { return home_url(); } else { return $redirect_to; } } return; } ?>
La même chose peut être effectuée avec le filtre « logout_redirect ». Au lieu de les envoyer à la page d’accueil, vous pouvez les rediriger vers une page « au revoir » ou celle de votre choix.
<?php add_filter( 'logout_redirect', 'goodbye_subscribers', 10, 3 ); function goodbye_subscribers( $location, $request, $user ) { global $user; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( 'subscriber', $user->roles ) ) { // change the slug below with your own page's slug return home_url( '/goodbye/' ); } else { return $redirect_to; } } return; } ?>
La redirection après la réinitialisation d’un mot de passe
Par défaut, les utilisateurs qui entrent dans leurs noms d’utilisateur ou leurs adresses emails dans le formulaire de réinitialisation des mots de passe sont renvoyés vers le formulaire de connexion. Le filtre « lostpassword_redirect » nous permet de changer ce comportement.
Si vous avez besoin de partager plus d’informations sur le processus de réinitialisation des mots de passe (le fait de vérifier les spams également pour retrouver l’email de vérification), vous pouvez rediriger les utilisateurs vers une page spécifique:
<?php add_filter( 'lostpassword_redirect', 'lostpassword_message' ); function lostpassword_message( $location ) { // change the slug below with your own page's slug return '/lost-password-notice/'; } ?>
La redirection après un commentaire
Le filtre « comment_post_redirect » vous permet de modifier la page vers laquelle les utilisateurs sont redirigés après avoir posté un commentaire.
Cela pourrait être le meilleur conseil dans ce tutoriel car il peut vous permettre d’augmenter la liste de vos abonnés. Par exemple, vous pouvez les envoyer vers une page de remerciement, et les inviter à s’abonner à votre blog.
<?php add_filter( 'comment_post_redirect', 'redirect_to_newsletter' ); function redirect_to_newsletter( $location ) { // change the slug below with your own page's slug return '/subscribe-to-our-newsletter/'; } ?>
Redirection après l’action « Press This »
« Press This » est un outil simple pour publier ou enregistrer des articles rapidement, mais il a quelques limites. Par exemple, une fois que vous avez utilisé le signet « Press this » de votre site Web, il vous fait revenir à la page que vous partagez dans la nouvelle fenêtre ouverte, alors que la page est déjà ouverte dans votre navigateur.
Heureusement, nous pouvons changer cela, avec l’aide des filtre « press_this_redirect_in_parent » et « press_this_save_redirect ». En utilisant le code suivant, la fenêtre contextuelle se fermera après l’action « Press This ».
<?php // use the built-in __return_true() WordPress function to simply return a "true" boolean statement add_filter( 'press_this_redirect_in_parent', '__return_true' ); // return the home URL to redirect the author to the homepage add_filter( 'press_this_save_redirect', function( $url, $id, $status ) { return home_url(); }, 10, 3 ); ?>
Pour finir
C’est à peu près tout ce dont vous avez besoin de savoir pour le moment. N’hésitez pas à nous contacter si vous souhaitez partager un avis ou en cas d’incompréhension.