web-dev-qa-db-ja.com

役割に応じてページを隠す

私は、管理者パネルの「ページ」メニューでユーザーがいくつかのページを見ることを制限する方法を見つけようとしていました。

私はedit.phpファイルを見て気づいた:

} elseif ( 'page' == $post_type ) {

しかし、somepagesを表示し、役割に応じて他の人を非表示にするために編集する必要があるものがわからない。

Adminはすべての投稿を見ることができます。

SubAdminは一部のページしか表示できません。

どのように私はこれを行うためにedit.phpファイル(または他の何らかのphpファイル)を編集することができますか?

1
StealthRT

ユーザーの現在の役割を取得する

$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
   return;
$roles = $current_user->roles;  //$roles is an array

ロールごとに表示したいロールセットページIDを取得した後(例:)

    if($roles=='administrator'){
     $args=array('21','22','23');
    }

   or

   if($roles=='subscriber'){
     $args=array('24','25','26');
    }

post__not_in属性を使ってあなたのページを除外するためにparse_queryフィルタフックを使うことができます

add_filter( 'parse_query', 'exclude_pages_from_admin' );
function exclude_pages_from_admin($query) {
    global $pagenow,$post_type;
    if (is_admin() && $pagenow=='edit.php' && $post_type =='page') {
        $query->query_vars['post__not_in'] = $args
    }
}

重要なリンク:

2
Ravinder Kumar