web-dev-qa-db-ja.com

管理者と編集者にのみwp-adminへのアクセスを許可する

管理者と編集者のみが許可されるように、wp-adminへのアクセスを制限しようとしています。現時点で私はこの機能を使用しています:

function restrict_admin(){
    //if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

しかしこれは管理者だけの仕事です。編集者はサイトのこの部分にアクセスすることは許可されていません。私に何ができる?

4
user2358350

あなたは能力をチェックしなければならないという点であなたは正しいです。ただし、管理オプションはデフォルトで管理者にのみ与えられます。あなたはdelete_others_postsのような編集者と管理者の両方が持っている能力に対してチェックするべきです。

function restrict_admin(){
//if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'delete_others_posts' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

役割と機能を参照してください コーデックスから/。

3
Andrew Bartel

これを使うこともできます。

<?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?> 
    // stuff here for admins or editors
<?php } ?>

詳細な参照のために、これを別の thread スタックでチェックしてください。

ありがとう

0
Vee

私にとっては、Codexごとにcurrent_user_can()へのロール名の受け渡しは正しく動作するとは保証されていないのでお勧めできません( #22624 を参照)ので、最善の選択肢はこのようなものです。

$user = wp_get_current_user();
$allowed_roles = array('administrator','editor');

if(array_intersect($allowed_roles, $user->roles)){
    //user have $allowed_roles
}
0
mokiSRB