我正在尝试删除 wordpress 管理面板上的一些顶级菜单。奇怪的是,我从声明函数的 plugin.php 文件中收到一条错误消息,内容如下: “第 1261 行为 C:\wamp\www\wordpress-alut\wp-admin\includes\plugin.php 中的 foreach() 提供的参数无效”。 我去了该文件并找到了以下代码:
function remove_menu_page( $menu_slug ) {
global $menu;
foreach ( $menu as $i => $item ) { // **this is line 1261**
if ( $menu_slug == $item[2] ) {
unset( $menu[$i] );
return $item;
}
}
return false;
}
重要的是要注意,当我使用 remove_submenu_page() 时,这是 plugin.php 中的下一个函数,我没有得到这样的错误。 我的函数,位于 functions.php 中:
add_action( 'admin_init', 'mf_remove_menu_pages' );
function mf_remove_menu_pages() {
remove_menu_page('link-manager.php');
remove_menu_page('index.php');
remove_menu_page('users.php');
remove_menu_page('upload.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('edit-comments.php');
remove_menu_page('post-new.php');
remove_submenu_page('themes.php','themes.php');
remove_submenu_page('themes.php','theme-editor.php');
remove_submenu_page('themes.php','widgets.php');
};
最佳答案
您在 $menu
实际设置之前调用了 mf_remove_menu_pages()
,或者似乎在 $menu
从未设置的情况下向上。您需要等待 admin_menu
钩子(Hook)才能实际调用 remove_menu_page()
。如果您在 admin_init
上执行此操作,那么您使用了错误的钩子(Hook),这就是为什么它在 AJAX 请求上很无聊
所以你需要改变你的钩子(Hook)。请试试这个:
add_action( 'admin_menu', 'mf_remove_menu_pages' );
function mf_remove_menu_pages() {
remove_menu_page('link-manager.php');
remove_menu_page('index.php');
remove_menu_page('users.php');
remove_menu_page('upload.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('edit-comments.php');
remove_menu_page('post-new.php');
remove_submenu_page('themes.php','themes.php');
remove_submenu_page('themes.php','theme-editor.php');
remove_submenu_page('themes.php','widgets.php');
}
希望这有帮助:)
关于php - wordpress 函数 remove_menu_page() 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9052416/