WordPressのカスタムメニューはWP_Queryで取得できます。

作成日:

WordPressのメニュー構造についてあれこれ見ていたら、メニューって

カスタム投稿;nav_menu_item
カスタム分類:nav_menu

で構成されているのが分かりました。

wp_get_nav_menu_items() | Function | WordPress Developer Resources https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/

Note: Most arguments passed to the $args parameter – save for ‘output_key’ – are specifically for retrieving nav_menu_item posts from get_posts() and may only indirectly affect the ultimate ordering and content of the resulting nav menu items that get returned from this function.

なので、指定したメニューのアイテムリストを取得する際は、通常の投稿取得と同様にWP_Queryでも可能であることが分かりました。

[php]$args = array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'nav_menu_item',
'post_status' => 'publish',
'nopaging' => true,
'update_post_term_cache' => false,
'tax_query' => array(
array(
'taxonomy' => 'nav_menu',
'field' => 'name',
'terms' => '{メニュー名}',
),
),
);
$the_query = new WP_Query($args);[/php]

もちろんこのままだと、階層の無いフラットな状態での表示になるので、また工夫が必要ですが。

取り敢えずメニューの表示をカスタマイズするのはWP_Queryを使っても良さそうだな、と判別しました。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。