web-dev-qa-db-ja.com

WordPressページを管理者だけがアクセスできるようにし、他のユーザーの役割をリダイレクトする

ログイン および 非管理者 usersを、ID 172のページからWebサイトのホームにリダイレクトする必要があります。ログインしていないユーザーも実際にページを見ることができます。

add_action('admin_init', 'xyz');
function xyz() {
    if( is_page( 172 ) ) {
             if( is_user_logged_in() && ! current_user_can('update_core') ) {
        wp_redirect( home_url() );
        exit;
             }
    }   
}

問題:このコードは機能していません。

5
Omar Tariq

admin_initは、フロントエンドではなく管理ページで実行されます。同等のフロントエンドアクションinitは、is_pageをチェックするには時期尚早です。リダイレクトのための安全なアクションはtemplate_redirectです。

function xyz() {
    if( is_page( 172 )
        && ! current_user_can('update_core') ) {
            wp_redirect( home_url() );
            exit;
    }   
}
add_action( 'template_redirect', 'xyz' );
5
Milo