Rediriger les visiteurs non enregistrés sous Wordpress

Il peut être bien pratique de rediriger des visiteurs curieux quand on travaille sur un site directement sur serveur. Wordpress propose bien sûr plusieurs plugins pour afficher une page de maintenance, mais quand 3 lignes de codes peuvent éviter l'installation d'un plugin tiers (ou tout simplement la fierté d'avoir fait ça "à la main") et rediriger les utilisateurs vers la page que l'on désire, cela peut être une solution encore meilleure. Pour cela il suffit d'ouvrir ou de créer functions.php dans votre thème ou votre child-theme et d'ajouter :

if(!is_user_logged_in()) {
wp_redirect( 'http://www.mon-domaine.fr/ma-page.html', 302 ); exit;
}

J'utilise le code 302 pour indiquer que la redirection est provisoire, car dans mon cas, je veux rediriger pendant le développement ou une maintenance.

Cette technique peut également être utilisée pour protéger certaines pages du site et ne les laisser accessibles qu'aux utilisateurs ayant un compte et étant connectés. Pour cela, il faut mettre la condition dans une fonction, et ajouter wp_reset_query(); avant la condition parce que functions.php est appelé avant même que l'on sache sur quelle page on est.

Ça va avoir son importance pour pouvoir tout de même accéder au panneau d'administration pour se connecter pour pouvoir ensuite accéder au reste du site (à moins que vous ayez opté pour l'option de rester connecté avec votre navigateur).

add_action("wp", "custom_redirect");
function custom_redirect(){
wp_reset_query();
if(is_page('')) {
if(!is_user_logged_in()) {
wp_redirect( 'http://www.mon-domaine.fr/ma-page.html', 302 ); exit;
}
}
}

On peut ainsi cibler la page voulue de différentes manières :

// N'importe quelle page.
is_page();
 
// Avec l'identifiant de la page.
is_page( 64 );
 
// Avec le titre de la page.
is_page( 'Titre' );
 
// When the Page with a post_name (slug) of "about-me" is being displayed.
is_page( 'about-me' );
 
// Ou en ciblant plusieurs pages.
is_page( array( 64, 'Titre' ) );

Ça va avoir son importance pour pouvoir tout de même accéder au panneau d'administration pour se connecter pour pouvoir ensuite accéder au reste du site (à moins que vous ayez opté pour l'option de rester connecté avec votre navigateur). 

add_action("wp", "custom_redirect");
function custom_redirect(){
wp_reset_query();
if(!is_admin) {
}
elseif(is_page('')) {
if(!is_user_logged_in()) {
    wp_redirect( 'http://www.mon-domaine.fr/ma-page.html', 302 ); exit;
}
}
}
BLOG COMMENTS POWERED BY DISQUS