我想限制对某些插件页面/普通WP页面的访问。我找到了一种从菜单中隐藏这些页面的方法,但目前没有限制它们。例如,我有一个编辑器,我不想让他们访问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);
但我如何限制他们完全查看此页面?喜欢权限?
SO网友:Bendoh
我认为正确的解决方案是只更新admin\\u菜单项的$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 );
请注意
user levels 已弃用,但它在这种情况下有效,基本上与创建新cap(管理员将自动访问该cap)并将该功能分配给这些菜单项时相同。