如何修复此错误:警告:为Foreach()提供的参数无效?

时间:2012-06-16 作者:timshutes

我最近将wordpress安装从本地实例移动到了开发服务器。为了迁移,我安装了wordpress 3.4的干净版本,移动了文件结构的精确副本,并使用导入/导出功能将帖子引入。

然后我进去设置必要的小部件和设置。我已经做了100次了,从来没有遇到过这个问题。以下是错误:

Warning: 为提供的参数无效foreach() 在里面/home/content/46/9411746/html/dev/wp-admin/includes/plugin.php 在线1285

它只出现在管理菜单中。当我尝试添加小部件、更改设置、使用菜单或更新帖子的元数据时,我就会看到它。它会在管理菜单中弹出。

以下是触发includes/plugin中错误的函数。php

function remove_menu_page( $menu_slug ) {
global $menu;

foreach ( $menu as $i => $item ) {
    if ( $menu_slug == $item[2] ) {
        unset( $menu[$i] );
        return $item;
    }
}

return false;
}
我正在使用外观>菜单,并在函数中注册了两个。php此处:

add_action( \'init\', \'register_my_menus\' );

function register_my_menus() {
register_nav_menus(
    array(
      \'header-nav\' => __( \'Main Header Navigation\', \'kyosay\' ),
      \'footer-nav\' => __( \'Footer Navigation\', \'kyosay\' )
    )
);
}
我正在对管理面板进行一些其他自定义,重新排序一些菜单项,并删除我的客户不需要的其他菜单项。如果你认为相关的话,我可以把代码包括进去。

由于这个问题是在core中触发的,我不知道如何解决它注意:我的本地版本没有出现此问题。有什么想法?

Edit: added remove_menu_items code from functions.php for reference

function remove_menu_items() {
remove_menu_page(\'link-manager.php\'); // Links
remove_menu_page(\'edit-comments.php\'); // Comments
}
add_action( \'admin_init\', \'remove_menu_items\' );
Update:
我删除了函数。php作为此问题的来源。它似乎是在Ajax事件中触发的(将新的小部件拖到侧栏,更新元框等)。我将卸载并重新安装,看看它是否仍在发生。这是否与web主机(godaddy)有关?它根本没有出现在我的本地版本中。

2 个回复
SO网友:Tyler Carter

这通常发生在您尝试进行管理导航时,而您没有被admin_menu. 如果你在那之前上钩,$menu 尚未创建。

add_action(\'admin_menu\', \'my_plugin_add_menu\');

function my_plugin_add_menu(){
    $ptype = \'my_post_type\';
    $ptype_obj = get_post_type_object( $ptype );
    add_submenu_page( \'my-menu-item\', $ptype_obj->labels->name, $ptype_obj->labels->all_items, $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype" );
}

SO网友:Karibe

我对wordpress也有类似的问题,只是添加了一个if语句来检查参数,如下所示

if(is_array($thearray)){
    //use $thearray here
}
警告也没了!!

结束