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

11

Comment rediriger des utilisateurs non connectés vers une page / URL spécifique vers une autre page / URL et afficher 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 dans WordPress. Prenez soin de me dire le fichier pour mettre le code aussi.

    
posée user3187719 30.01.2014 - 21:23

4 réponses

24

Voici deux 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, modifiez 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. .

enlace

    
réponse donnée Brad Dalton 31.01.2014 - 09:03
4

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 assez bien aujourd'hui.

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

Comme pour vous devriez lire le lien de référence 1. Cela vous indiquera le fichier dans lequel 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 être placé 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é permettant à l'utilisateur de 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. Balises conditionnelles
  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
réponse donnée Borek 30.01.2014 - 22:57
4

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.

    
réponse donnée MCG 13.12.2014 - 14:38
3

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 initialement.

Documentation ici:

enlace

    
réponse donnée Yahya Uddin 17.11.2017 - 17:00

Lire d'autres questions sur les étiquettes