web-dev-qa-db-ja.com

特定のユーザーロールでwp-adminにアクセスできないようにする方法

私はプラグインのフロントエンドユーザーを使ってみましたが、フロントエンドページへのアクセスを妨げるのでこれは何かと衝突します。そのため、2つのユーザー名(またはロール)のどちらでもないユーザーがwp-adminにアクセスできないように手動で設定する必要があります。

6
Claire

プラグイン

これは基本的に単なるユーザー機能チェックであり、その後に出口呼び出しでのリダイレクトが続きます。その後、リクエストの送信元のサイトにリダイレクトします。

<?php
! defined( 'ABSPATH' ) AND exit;
/* Plugin Name: (#66093) »kaiser« Deny Admin-UI access for certain roles */


function wpse66093_no_admin_access()
{
    $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
    if ( 
        current_user_can( 'USER_ROLE_NAME_HERE' )
        OR current_user_can( '2ND_ROLE_NAME_HERE' )
    )
        exit( wp_redirect( $redirect ) );
}
add_action( 'admin_init', 'wpse66093_no_admin_access', 100 );
14
kaiser

承認された回答は ユーザーロール と述べていますが、実際には ユーザー機能についての機能を使用しています

これが ユーザーロールの解決策です

 function wpse66094_no_admin_access() {
    $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
    global $current_user;
    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);
    if($user_role === 'YOUR_USER_ROLE_HERE'){
        exit( wp_redirect( $redirect ) );
    }
 }

add_action( 'admin_init', 'wpse66094_no_admin_access', 100 );
2
Akshay Agarwal

@kaiserによって提供された回答に基づいて(ありがとうところで)、これは私の作業コードです。それはfunctions.phpファイルに置かれます。

使用される条件は、ユーザーmanage_optionsまたはedit_postsを使用できない場合です。

function wpse66093_no_admin_access() {
    $redirect = home_url( '/' );
    if ( ! ( current_user_can( 'manage_options' ) || current_user_can( 'edit_posts' ) ) )
        exit( wp_redirect( $redirect ) );
}
add_action( 'admin_init', 'wpse66093_no_admin_access', 100 );
2
Carlos B

@ kaiserの答えで、私はadmin_initの上にadmin_menuフックを利用する必要があることを発見しました。そうしないと、ユーザーが「読み取り」アクセス権を持っていない場合は、user_can_access_admin_page()をチェックしてください。ダッシュボードには、「このページにアクセスするための十分な権限がありません」というメッセージが表示されます。リダイレクトされるのではなく、ページ。

ロールからread機能を削除すると、ユーザーはダッシュボードにアクセスできなくなります。それらは以下のエラーを受け取ります。

この管理者ページにアクセスするための十分な権限がありません。

理由:現在のユーザには、「ダッシュボード」メニュー項目にアクセスするために必要な「読み取り」機能がありません。

参照: https://codex.wordpress.org/Roles_and_Capabilities#read

0
MarcGuay