web-dev-qa-db-fra.com

Les membres WP sont redirigés si un membre est déjà connecté

J'utilise le plugin WP-Members. Ma page d'accueil Wordpress est la page de connexion pour les membres WP.

Dans mon thème functions.php, j'ai utilisé ce filtre et cette fonction WP-Members pour rediriger les membres vers la page des messages une fois qu'ils se sont connectés.

add_filter( 'wpmem_login_redirect', 'my_login_redirect' );

function my_login_redirect()
{
// return the url that the login should redirect to
return 'http://mydomain.com/specials/';
}

Et cela fonctionne comme prévu. Toutefois, lorsque quelqu'un retourne sur le site et est déjà connecté à partir d'une session précédente, cette redirection ne détecte pas leur statut connecté et ne les redirige pas. Je suppose que, parce que la fonction n'est appelée que lorsque quelqu'un se connecte.

Je connais bien la programmation, mais je commence à travailler avec WordPress. Je n'ai pu trouver aucune information sur la façon de résoudre ce problème, même si je soupçonne fortement que cela existe. Quelqu'un peut-il m'aider à me diriger dans la bonne direction?

J'apprécie l'aide et les conseils de chacun par avance.

Je vous remercie!

2
BitBug

Je suppose que, parce que la fonction n'est appelée que lorsque quelqu'un se connecte.

C'est correct. wpmem_login_redirect est un filtre qui survient lorsqu'un utilisateur est en train de se connecter. S'ils se rendent sur le site et, en raison de l'existence d'un cookie, sont dans un état connecté, ils ne seront pas redirigés.

Du point de vue de l'expérience utilisateur, il n'est pas vraiment judicieux de simplement rediriger une personne à son retour, même si cette personne est dans un état connecté. De même, vous allez avoir beaucoup de difficulté à trouver une méthode qui ne la redirige pas, qu’elle revienne sur le site ou qu’elle le visite.

La fonction que vous souhaitez utiliser pour la redirection est wp_redirect () . Vous pouvez attacher cela à une action qui se produit avant qu'une information ne soit envoyée en aval au navigateur (telle que init) et tester pour voir si elles sont connectées:

add_action( 'init', 'my_redirect' ); function my_redirect(){ if( is_user_logged_in() ) { wp_redirect( 'http://somedomain.com/some-page' ); exit(); } }

Comme je l'ai dit, cela ne fait pas la différence si l'utilisateur vient de s'afficher ou s'il passe d'une page à une autre. Pour que cela soit utile et non gênant, vous devez ajouter un processus permettant de déterminer cela et d'agir. en conséquence.

2
butlerblog