特定のプラグインページ/通常のWP Pagesへのアクセスを制限したいです。メニューからこれらのページを隠す方法を見つけましたが、現在は制限していません。例えば、私はエディタを持っていて、彼らがMedia
とTools
にアクセスできないようにします - これらのページを隠すことができます:
function editor_menu() {
global $menu;
if(!current_user_can('administrator'))
{
$restricted = array(__('Media'),__('Tools'));
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
}
}
add_action('admin_menu', 'editor_menu', 999);
しかし、どうすればこのページを閲覧できないように制限できますか。権限が好きですか?
ここでの正しい解決策は、単にメニュー構造からそれらを削除するのではなく、単にadmin_menu項目の$ capabilityコンポーネントを更新することであると私は信じます。
これを試して:
/** Set 'administrator' cap for particular menu items **/
function update_admin_menu() {
global $menu, $submenu;
$menu[10][1] = 'administrator'; // Media
foreach( $submenu['upload.php'] as &$item ) {
$item[1] = 'administrator';
}
$menu[75][1] = 'administrator'; // Tools
foreach( $submenu['tools.php'] as &$item ) {
$item[1] = 'administrator';
}
}
add_action( 'admin_menu', 'update_admin_menu', 1000 );
ユーザーレベル に対するチェックは廃止予定ですが、これはこの状況で機能し、基本的に新しい上限を作成した場合と同じです。どの管理者が自動的に()にアクセスでき、代わりにこれらのメニュー項目にその機能を割り当てます。