你确实是对的,在管理员更新之前(我想是UI重新设计等),菜单中的未设置项实际上会阻止访问这些页面,现在已经发生了明显的变化,需要额外的封顶检查。
这不是我调查过自己的事情(因为我现在才发现),所以我不能谈论这样做的方法。。但这确实让我感到困扰,他们现在已经把一个简单的不稳定任务变成了一个更大的任务,需要有条件的能力检查(这只是以前不需要的更多腿部工作)。
从启示录继续:
好的,看到
remove_menu_page
现在,子菜单的等效项几乎没有意义了(我的意思是说,让页面完全隐藏在视图之外才有好处),我的建议是在媒体子菜单项上循环,并动态更新所需的大写字母(如果你需要这样做的话)。
这似乎达到了预期的效果…:)
add_action( \'admin_menu\', \'remove_menu_links\' );
function remove_menu_links() {
global $submenu;
remove_menu_page(\'upload.php\');
foreach( $submenu[\'upload.php\'] as $position => $data ) {
$submenu[\'upload.php\'][$position][1] = \'desired cap here\';
}
}
NOTE: 如果您希望项目完全消失/无法访问,只需使用一个不存在的上限(或者只需保留上面的代码即可)。。
上述代码的更新版本:
下面是您的最后一条评论,这样做可能是明智的。。。或者类似的东西。。
add_action( \'admin_menu\', \'remove_menu_links\' );
function remove_menu_links() {
global $submenu;
// Remove media for non-admins
if( !current_user_can(\'manage_options\') )
remove_menu_page(\'upload.php\');
// Still need to update cap requirements even when hidden
foreach( $submenu[\'upload.php\'] as $position => $data ) {
$submenu[\'upload.php\'][$position][1] = \'manage_options\';
}
}
我意识到现在你还需要
current_user_can
调用,只是为了处理将父项的删除条件化。。