私は、管理者パネルの「ページ」メニューでユーザーがいくつかのページを見ることを制限する方法を見つけようとしていました。
私はedit.phpファイルを見て気づいた:
} elseif ( 'page' == $post_type ) {
しかし、somepagesを表示し、役割に応じて他の人を非表示にするために編集する必要があるものがわからない。
Adminはすべての投稿を見ることができます。
SubAdminは一部のページしか表示できません。
どのように私はこれを行うためにedit.phpファイル(または他の何らかのphpファイル)を編集することができますか?
ユーザーの現在の役割を取得する
$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
}
}
重要なリンク: