it-swarm.com.de

Wie behebe ich diesen Fehler: Warnung: Ungültiges Argument für foreach () angegeben?

Ich habe kürzlich eine WordPress-Installation von meiner lokalen Instanz auf einen Dev-Server verschoben. Für den Umzug installierte ich eine saubere Version von WordPress 3.4, verschob exakte Duplikate der Dateistruktur und verwendete die Import/Export-Funktion, um die Posts einzuspielen.

Ich ging dann hinein und stellte die notwendigen Widgets und Einstellungen ein. Ich habe das 100 Mal gemacht und hatte nie dieses Problem. Hier ist der Fehler:

Warnung : Ungültiges Argument für foreach() in /home/content/46/9411746/html/dev/wp-admin/includes/plugin.php on line 1285

Es erscheint nur im Admin-Menü. Ich sehe es, wenn ich versuche, ein Widget hinzuzufügen, eine Einstellung zu ändern, mit Menüs zu arbeiten oder Metadaten für einen Beitrag zu aktualisieren. Es erscheint überall im Admin-Menü.

Hier ist die Funktion, die den Fehler in der Datei includes/plugin.php auslöst

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;
}

Ich verwende Erscheinung> Menüs und habe zwei hier in functions.php hier registriert:

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' )
    )
);
}

Ich passe das Admin-Panel auf andere Weise an, ordne einige Menüelemente neu an und eliminiere andere, die meine Kunden nicht benötigen. Ich kann diesen Code einfügen, wenn Sie der Meinung sind, dass er relevant ist.

Da dieses Problem im Kern ausgelöst wird, weiß ich nicht, wie es behoben werden kann. HINWEIS: Das Problem tritt bei meinem lokalen Build nicht auf. Gedanken?

Edit: remove_menu_items Code aus functions.php als Referenz hinzugefügt

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:
Ich habe functions.php als Quelle für dieses Problem beseitigt. Es scheint bei Ajax-Ereignissen ausgelöst zu werden (Ziehen eines neuen Widgets in eine Seitenleiste, Aktualisieren einer Meta-Box usw.). Ich werde deinstallieren und neu installieren und prüfen, ob es immer noch passiert. Kann dies etwas mit dem Webhost zu tun haben (Godaddy)? Es ist überhaupt nicht auf meinem lokalen Build zu sehen.

2
timshutes

Dies passiert normalerweise, wenn Sie versuchen, Admin-Navigationsaufgaben zu erledigen und nicht an admin_menu gebunden sind. Wenn Sie sich vorher angemeldet haben, wurde $menu noch nicht erstellt.

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" );
}
3
Tyler Carter

Ich hatte ein ähnliches Problem mit WordPress, habe nur eine if-Anweisung hinzugefügt, um das Argument wie folgt zu überprüfen

if(is_array($thearray)){
    //use $thearray here
}

und die Warnung war weg !!

0
Karibe