web-dev-qa-db-ja.com

ログインしていない場合はリダクトしますか?

特定のページにログインしていない人をリダイレクトするためにこれを試しました。最終的にはどのフロントエンドページにアクセスしてもかまいませんが、ランディングページとして選択されているページにリダイレクトする必要があります(これはwp_redirectのURLになると想定しています)。私はまだWP - ログインやダッシュボードなどへのアクセスが必要です...

私のfunctions.phpに次のコードを入れましたが、うまくいきませんでした。

function my_redirect() {    
   if ( $_SERVER['HTTP_Host'].$_SERVER['REQUEST_URI'] == 'mybigfatsite.com/' ) {
    if ( ! is_user_logged_in() ) {
       wp_redirect( 'mybigfatsite.com/landing/' );
       exit;
    }
}
}
add_action( 'init', 'my_redirect' );

助けてくれてありがとう!

2
alexwc_

is_login_page()関数は から取得されます -

function is_login_page() {
    if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' )
        return true;
    return false;
}

function my_redirect() {  
    //if you have the page id of landing. I would tell you to use if( is_page('page id here') instead
    //Don't redirect if user is logged in or user is trying to sign up or sign in
    if( !is_login_page() && !is_admin() && !is_user_logged_in()){
        //$page_id is the page id of landing page
        if( !is_page($page_id) ){
            wp_redirect( get_permalink($page_id) );
            exit;
        }
    }
}
add_action( 'template_redirect', 'my_redirect' );
8
sakibmoon