一直在挖掘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);
任何帮助都将不胜感激。谢谢
最合适的回答,由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;
}