使用remove_menu_page()
该函数用于通过slug删除默认管理菜单项,如下所示:
add_action( \'admin_menu\', \'hide_menu\' );
function hide_menu() {
remove_menu_page( \'index.php\' ); // Dashboard
remove_menu_page( \'tools.php\' ); // Tools
}
当插件在仪表板中创建自己的菜单时,URL结构如下所示:
http://example.com/wp-admin/admin.php?page=plugin-slug
但是,当尝试删除自定义插件菜单项时,如下所示:
remove_menu_page( \'admin.php?page=plugin-slug\' );
没有任何变化。看看类似的问题
here 和
here, 似乎自定义插件设置加载后,我的函数没有及时调用?然而,当我试图将优先级提高到更高的数字时,这仍然不起作用:
add_action( \'admin_menu\', \'hide_menu\', 9001, 1 );
是否有变通方法?我这样做对吗?
最合适的回答,由SO网友:Ethan O\'Sullivan 整理而成
感谢你的回答the_dramatist 发布后,这只是一个与admin_init
标签这些插件页面的slug可以由\\u剧作家提供的调试脚本检索,或者您可以在admin.php?page=plugin-slug
:
add_action( \'admin_menu\', \'wpse_243070_hide_menu\' );
function wpse_243070_hide_menu() {
remove_menu_page( \'index.php\' ); // Dashboard
remove_menu_page( \'tools.php\' ); // Tools
remove_menu_page( \'plugin-slug\' ); // Some plugin
remove_menu_page( \'another_slug\' ); // Another plugin
}
SO网友:CodeMascot
将此临时代码放置在functions.php
或者任何可以执行的地方。
add_action( \'admin_init\', \'the_dramatist_debug_admin_menu\' );
function the_dramatist_debug_admin_menu() {
echo \'<pre>\' . print_r( $GLOBALS[ \'menu\' ], TRUE) . \'</pre>\';
}
然后搜索
plugin-slug
. 在哪个数组中找到它复制
[2]
值并将其放入
remove_menu_page(\'the [2] value\')
把它挂在
admin_init
如下所示-
add_action(\'admin_init\', \'\');
function the_dramatist_remove_menu(){
remove_menu_page( \'the [2] value\' );
});
它会起作用的。并在其工作后删除临时代码块。
另一方面,您可以检查要删除的菜单页的插件代码,以及它们的add_menu_page()
函数取add_menu_page()
函数并将其放入remove_menu_page(\'fourth parameter\')
. 它也会起作用。代码如下所示-
add_action(\'admin_init\', \'\');
function the_dramatist_remove_menu(){
remove_menu_page( \'fourth parameter of add_menu_page()\' );
});
SO网友:Picard
对我来说,简单地取消菜单元素的设置被证明是最简单、最通用的方法,例如,通过这种方式,您可以删除所有菜单项,但只保留一些所需的菜单项,如:
add_filter(\'admin_menu\', \'wpse_243070_hide_menu_items\', 100);
function wpse_243070_hide_menu_items() {
foreach ($GLOBALS[\'menu\'] as $mkey => $mval) {
if (!in_array($mval[2], [
\'separator1\',
\'separator2\',
\'profile.php\',
\'edit.php?post_type=my_custom_post\'
])) {
unset($GLOBALS[\'menu\'][$mkey]);
}
}
}