web-dev-qa-db-fra.com

Autoriser les utilisateurs non connectés à visiter uniquement la page de connexion et la page de réinitialisation du mot de passe

Comment puis-je rediriger les utilisateurs s'ils souhaitent visiter d'autres pages, mais la page de connexion et la page de réinitialisation du mot de passe?

Ma page de connexion est en fait ma page d’accueil et je souhaite les rediriger tous vers une page de connexion s’ils ne sont pas connectés. Permettez-leur également de réinitialiser le mot de passe s’ils les ont oubliés.

Merci

1
Vucko

Vous avez indiqué que votre page de connexion est votre page d'accueil. Si vous souhaitez que tous les utilisateurs non connectés soient ensuite redirigés vers la page d'accueil, vous devez vérifier plusieurs éléments:

  1. L'utilisateur est-il connecté?
  2. La page actuelle est-elle la page d'accueil?

Vous pouvez faire ces choses avec is_user_logged_in() et is_front_page (). Si ce n'est pas le cas, vous pouvez utiliser wp_redirect() pour rediriger l'utilisateur vers la page d'accueil.

En supposant que votre page de mot de passe oublié soit une "page", vous pouvez également utiliser is_page() dans votre logique.

Vous devez le lier à une action pour qu'il se déclenche suffisamment tard pour permettre de vérifier la page, mais suffisamment tôt pour rediriger l'utilisateur en toute sécurité (c'est-à-dire avant l'envoi des en-têtes). template_redirect est idéal pour cela.

add_action( 'template_redirect', 'my_frontpage_redirect' );
function my_frontpage_redirect() {
    if ( ! is_user_logged_in() ) {
        if ( ! is_front_page() && ! is_page( 'my-password-reset' ) ) {
            wp_redirect( home_url() );
            exit();
        }
    }
}

Ajustez le slug dans l'appel is_page() en fonction de la slug de page pour la réinitialisation de votre mot de passe.

0
butlerblog

Vous pouvez ajouter une règle de réécriture dans votre .htaccess, en recherchant les utilisateurs non connectés et les rediriger vers la page d'accueil:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [NC]

Sur votre page de connexion, vous devez fournir un lien pour réinitialiser le mot de passe oublié.

0
Fabio Marzocca

Dans Paramètres, Lecture, activez le bouton "Visible uniquement par les utilisateurs enregistrés de ce site". Tous les visiteurs du site verront la page de connexion.

Après la connexion, les utilisateurs seront dirigés vers leur page de profil utilisateur. Vous pouvez modifier cette redirection avec un code similaire à celui-ci, qui sera redirigé vers la page d'accueil du site. (Dans votre cas, vous devrez modifier votre page d'accueil pour un autre élément afin qu'ils ne soient pas obligés de se connecter deux fois.)

function go_here_after_login( $redirect_to, $request, $user ) { 
    if (current_user_can( 'manage_options' )) {return $redirect_to;}
    else {return home_url();}

    return;
}
add_filter ('login_redirect', 'go_here_after_login', 10, 3);

Il y a beaucoup de googles sur la façon de changer votre écran de connexion.

Notez que vous pouvez utiliser htaccess pour demander une connexion, mais cette méthode vous permet d’utiliser les comptes utilisateurs WP que vous avez sur votre site.

0
Rick Hellewell