web-dev-qa-db-fra.com

Comment rediriger les utilisateurs non connectés vers une page spécifique?

Comment rediriger les utilisateurs non connectés demandant une page/URL spécifique vers une autre page/URL et affichant un message du type "réservé aux membres". Je sais que c'est assez facile à coder en utilisant la fonction! Is_user_logged_in () mais je ne sais pas comment le coder car je suis un débutant sur WordPress. Prenez soin de me dire le fichier pour mettre le code aussi.

14
user3187719

Voici 2 exemples que vous devrez modifier légèrement pour le faire fonctionner pour vos besoins spécifiques.

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' ); 
    exit;
   }
}

Mettez ceci dans votre fichier de fonctions de thème enfant, changez l'ID de page ou le slug et l'URL de redirection.

Vous pouvez également utiliser un code comme celui-ci:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 ); 
  exit;
    }
}

Vous pouvez ajouter le message directement à la page ou si vous souhaitez afficher le message pour tous les utilisateurs non connectés, ajoutez-le au code .

http://codex.wordpress.org/Function_Reference/wp_redirect

28
Brad Dalton

Ce serait mieux:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users

Cela redirige l'utilisateur vers la page de connexion. Une fois connecté, l'utilisateur est redirigé vers la page sécurisée à laquelle il tentait d'accéder.

Documentation ici:

https://codex.wordpress.org/Function_Reference/auth_redirect

4
Yahya Uddin

Comment pouvons-nous vous dire où le mettre si vous ne nous dites pas quoi et où vous voulez l'afficher? Messages entiers? Pages? Pièces personnalisées de pages? Désolé ... Je suppose que ma boule de cristal ne fonctionne pas très bien aujourd'hui.

Puisque vous êtes, et je vous cite: "un débutant sur wordpress", vous devriez plutôt apprendre que de demander une réponse directe.

Quant à , vous devriez lire le lien référence 1. Cela vous indiquera dans quel fichier vous devez le placer.

En ce qui concerne comment, vous devez d'abord lire les liens de référence 2 et 3.

Globalement, cela devrait ressembler à ceci:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

Bien sûr, le code ci-dessus doit aller dans une boucle . Vous pouvez le construire aussi complexe ou aussi simple que vous le souhaitez. Par exemple, au lieu d'un simple texte si vous n'êtes pas connecté, vous pouvez afficher le formulaire d'inscription complet ou, comme je le suggère, un écran divisé dans lequel l'utilisateur peut se connecter (l'utilisateur peut avoir un compte mais oublié de se connecter) ou s'inscrire. (s'il n'en a pas).

  1. Hiérarchie des modèles
  2. Tags conditionnels
  3. La boucle

Ajouté après les commentaires ci-dessous:

Pour rediriger, utilisez header avec le wp_login_url. Vérifiez à nouveau les références 1 et 2 ci-dessous:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

Référence:

  1. En-tête - PHP
  2. wp_login_url
4
Borek

Vous ne pouvez pas rediriger vers une page spécifique, mais chaque utilisateur non connecté sera redirigé vers l'écran de connexion.

<?php auth_redirect(); ?>

Référence Wordpress: auth_redirect()

Juste pour mentionner une autre solution.

4
MCG