私は最近、ワードプレスのインストールを自分のローカルインスタンスから開発サーバーに移しました。移動のために、私はwordpress 3.4のクリーンバージョンをインストールし、ファイル構造の正確な複製を移動し、そして投稿を持ち込むためにインポート/エクスポート機能を使用しました。
それから私は中に入り、必要なウィジェットと設定を設定しました。私はこれを100回やったことがありますが、この問題は一度もありませんでした。これがエラーです。
警告:/ home/content/46/9411746/html/dev/wp-admin/include/plugin.php内の1285でforeach()
に無効な引数が指定されています
管理メニューにのみ表示されます。ウィジェットを追加したり、設定を変更したり、メニューを操作したり、投稿のメタデータを更新しようとしたときに表示されます。管理メニューの至るところにポップアップ表示されます。
これは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;
}
私は外観>メニューを使用していて、functions.phpにここに2つ登録しています
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' )
)
);
}
私はいくつかのメニュー項目を並べ替え、私のクライアントが必要としない他のものを排除して、管理者パネルの他のカスタマイズをしています。関連があると思われる場合は、そのコードを含めることができます。
この問題はコアで引き起こされるので、それをどう修正するかについて迷っています。注:問題は私のローカルビルドでは起こりません。考えですか?
編集:参考のためにfunctions.phpからremove_menu_itemsコードを追加しました
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' );
更新:
この問題の原因としてのfunctions.phpを削除しました。それはAjaxイベント(新しいウィジェットのサイドバーへのドラッグ、メタボックスの更新など)で引き起こされるようです。アンインストールして再インストールし、それがまだ起こっているかどうかを確認します。それは私のローカルビルドにはまったく現れていません。
これは通常あなたが管理ナビゲーションのことをやろうとしていて、あなたが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" );
}
私はワードプレスで同様の問題を抱えていました、ちょうど次のように引数をチェックするためにifステートメントを追加しました
if(is_array($thearray)){
//use $thearray here
}
そして警告は消えた!