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


16

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

Réponses:


30

Voici 2 exemples que vous devrez modifier légèrement pour le faire fonctionner selon 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 cela 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 du 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


Merci pour votre réponse J'ai aimé ça add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }Mais ça ne marche pas
user3187719

Utilisez l'ID de page ou le slug ici, pas l'url mydomain.com/participate codex.wordpress.org/Conditional_Tags
Brad Dalton

is_page ('participer')
Brad Dalton


4

Comment pouvons-nous vous dire où le mettre si vous ne nous avez pas dit quoi et où vous voulez l'afficher? Messages entiers? Des pages? Parties personnalisées de pages? Désolé ... Je suppose que ma boule de cristal ne fonctionne pas vraiment aujourd'hui.

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

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

Quant à la façon de le faire, vous devez d'abord lire les liens de référence 2 et 3.

Dans l'ensemble, cela devrait ressembler à ceci:

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

Bien sûr, le code ci-dessus doit entrer 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 par exemple ou - comme je le suggère - un écran divisé où l'utilisateur peut se connecter (car l'utilisateur peut avoir un compte mais a 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 l'utilisation headeravec le wp_login_url-, vérifiez 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

En fait, je ne connais pas la fonction sur wordpress qui renvoie l'URL ou le permalien demandé. Et à propos du message affiché, laissez-le, je veux juste les rediriger lorsqu'ils demandent une certaine URL sans être connecté.
user3187719

puis-je le faire avec $ pagenow?
user3187719

@ user3187719 a modifié ma réponse d'origine et a ajouté la solution à rediriger. PS. $pagenow? Vous essayez de tuer une mouche avec un canon sûr que cela fonctionnera, mais pourquoi si complexe? Rester simple. PS2: Apprenez PHP et WP Codex.
Borek

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.