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.
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:
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 .
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
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.
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 où 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).
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.
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 pasCe serait mieux:
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:
https://codex.wordpress.org/Function_Reference/auth_redirect
la source
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 où 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:
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).
Ajouté après les commentaires ci-dessous:
Pour rediriger l'utilisation
header
avec lewp_login_url
-, vérifiez les références 1 et 2 ci-dessous:Référence:
la source
$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.Vous ne pouvez pas rediriger vers une page spécifique, mais chaque utilisateur non connecté sera redirigé vers l'écran de connexion.
Référence Wordpress:
auth_redirect()
Juste pour mentionner une autre solution.
la source