如何从WordPress主导航中删除整个Media部分,而不只是隐藏它?

时间:2011-07-28 作者:Andrew

我想从左侧的WordPress管理导航中删除整个“媒体”部分。我不想做的只是用CSS或下面的插件/函数“隐藏”它,因为它仍然可以通过URL访问。这一点至关重要,用户不应以任何方式看到彼此上传。

这是我目前拥有的,只是隐藏了它。如果你去上传。在url中,您仍然可以访问它。

add_action( \'admin_menu\', \'remove_menu_links\' );
function remove_menu_links() {
    remove_menu_page(\'upload.php\'); //remove media
}
有什么想法吗?我认为一种合适的方法是,如果用户试图访问上载,只需将用户引导到仪表板并显示错误消息。php url?但不知道该怎么做。

2 个回复
最合适的回答,由SO网友:t31os 整理而成

你确实是对的,在管理员更新之前(我想是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 调用,只是为了处理将父项的删除条件化。。

SO网友:PrivateUser

Why not you try Role scoper plugin?

结束

相关推荐