WordPressの移行作業をしているとメニュー周りで、エラーが出る
これはwp_get_nav_menu_itemsを利用してループを回しているために発生します。
//Footer_menuが管理画面から登録されていないとエラーになる
$main_menu = wp_get_nav_menu_items('Footer_menu', array());
foreach($main_menu as $key => $menu):
$url = str_replace($this_url, "", $menu->url);
if(count($main_menu) > $key+1): ?>
wp_get_nav_menu_items関数に、引数でslugを指定してあげないといけない。ここではFooter_menu
上記エラーはその引数が与えられていないために発生します
管理画面のイメージ
しかし、WordPressテーマを利用数人はいろんな、メニュー名をつけるはず。
どんなメニュー名をつけても利用できるようにしておいてあげないといけない。
そのために。
function get_nav_menu_items_by_location($location, $args = [])
{
// すべての場所のnavを取得 ここがポイント
$locations = get_nav_menu_locations();
// NavのオブジェクトIDを取得
$object = wp_get_nav_menu_object($locations[$location]);
// メニュー名より、メニューのアイテムを取得
$menu_items = wp_get_nav_menu_items($object->name, $args);
//メニューのpostオブジェクトを返却
return $menu_items;
}
これで場所さえ指定すれば、どんなメニュー名でもエラーは出なくなります。
めでたし めでたし