从菜单屏幕中删除Metabox

时间:2012-03-30 作者:Zach

一直在挖掘WP文件,我想我可能遗漏了一些东西。最终目标是删除Theme Locations 如果某人没有特定功能,则从菜单屏幕中选择metaboxmanage_options. 我知道,在可用性方面有点奇怪,但只有一个菜单,我们正在努力让这更难搞砸;)

正在查看/wp-admin/nav-menu.php 绕线383 我明白了wp_nav_menu_setup() 因此,我尝试添加以下内容作为过滤器,但迄今为止没有成功:

function roots_remove_nav_menu_metaboxes() {
// Remove Theme Locations from users without the \'manage_options\' capability
    if (current_user_can(\'manage_options\') == false) {
        remove_meta_box(\'wp_nav_menu_locations_meta_box\', \'nav-menus\', \'side\');     // theme locations
    }
}
add_action(\'wp_nav_menu_setup\', \'roots_remove_nav_menu_metaboxes\',9999);
任何帮助都将不胜感激。谢谢

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

该框将添加到wp\\u nav\\u menu\\u setup()中,因此您必须在之后的某个时间将其删除,然后再将其输出到nav menu中。php。这里似乎没有任何可以使用的操作挂钩,只有管理标头。php有一些。您可以尝试以下操作:

add_action( \'admin_head-nav-menus.php\', \'roots_remove_nav_menu_metaboxes\' );
不过,我从未尝试过从菜单屏幕中删除元盒,而且它还没有经过测试,所以不知道它是否有效。

SO网友:Stephen Harris

我不认为那是一个钩子。事实上,似乎根本没有一个合适的。但在里面wp_nav_menu_setup(), 这个manage_nav-menus_columns 在添加元数据库后不久调用。您可以钩住它并将其移除:

add_action( \'manage_nav-menus_columns\', \'my_remove_meta_locations_box\' );
function my_remove_meta_locations_box($columns) {
     if ( ! current_user_can(\'manage_options\') )          
          remove_meta_box(\'nav-menu-theme-locations\', \'nav-menus\', \'side\');

    return $columns;
}

SO网友:bueltge

一个快速而简单的选择是使用插件Adminimize, 这将为不同的角色支持此选项。

SO网友:Tom J Nowell

您可以使用CSS将其隐藏,而不是删除元盒,例如:

#nav-menu-theme-locations {
    display: none;
}
您删除方框本身的问题很可能是订购问题,可能是在添加方框之前尝试删除方框,也可能是在将其发送给用户之后删除方框

结束

相关推荐

在自定义Metabox中上载多个图像

我不熟悉主题开发。我正在尝试创建一个能够上载图像的自定义元数据库。我是在一个页面上做这件事,而不是在帖子上。我想将图像(多个)以无序列表的形式输出到页面上。我尝试使用WP alchemy,我只能让metabox显示出来,但我不知道如何将imgurl输出到页面。有没有更好的方法可以将多个图像上传到一个页面,这对客户端来说很容易,而且不会将图像添加到内容编辑器中(我只是觉得它不方便用户),然后将它们输出到无序列表中的页面。请给我一些建议。