web-dev-qa-db-fra.com

Mécanisme d'authentification/connexion (non-wp-admin)

Je développe un thème. J'ai besoin d'un système de connexion permettant aux utilisateurs de voir tout le contenu de l'application et d'interagir avec elle. seulement après leur connexion (pas la connexion du panneau d'administration).

J'ai besoin de rediriger tout le trafic au début vers une page login.php au lieu de wordpress "home" (page.php), si les utilisateurs ne sont pas connectés. Sinon, atterrir à "home".

Quelle est la bonne façon de faire cela dans wordpress sans utiliser de plugins?

3
shadesco

Vous pouvez utiliser le hook wp_loaded pour envoyer tout le trafic non connecté à l'écran de connexion. Notez que j'ai transmis $_SERVER['REQUEST_URI'] à wp_login_url() - il est transmis en tant que paramètre d'URL à la page de connexion et une fois qu'un utilisateur s'est connecté avec succès, il sera redirigé vers l'URL qu'il tentait initialement de consulter.

function wpse_178177_redirect_to_login_if_guest() {
    if ( ! is_admin() && ! is_user_logged_in() && $GLOBALS['pagenow'] !== 'wp-login.php' ) {
        wp_redirect( wp_login_url( $_SERVER['REQUEST_URI'] ) );
        exit;
    }
}

add_action( 'wp_loaded', 'wpse_178177_redirect_to_login_if_guest' );
6
TheDeadMedic