web-dev-qa-db-ja.com

認証/ログインメカニズム(非wp-admin)

私はテーマを開発しています。私は、ユーザーがアプリケーションのすべての内容を見てそれと対話できるようにするユーザーログインシステムを持っている必要があります。 彼らがログインした後にのみ(管理者パネルログインではありません)。

起動時にすべてのトラフィックをリダイレクトする必要があります ユーザーがログインしていない場合、wordpress "home"(page.php)の代わりにlogin.phpページに移動します。それ以外の場合は "home"になります。

プラグインを使用せずにワードプレスでそれを行うための正しい方法は何ですか?

3
shadesco

wp_loadedフックを使用すると、ログインしていないすべてのトラフィックをログイン画面にプッシュできます。 $_SERVER['REQUEST_URI']wp_login_url()に渡したことに注意してください - これはログインページへのURLパラメータとして渡され、ユーザーが正常にサインインすると、元々訪問しようとしていたURLにリダイレクトされます。

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