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

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



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

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

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

wp_get_nav_menu_items() | Function | WordPress Developer Resources
参考
wp_get_nav_menu_items() | Function | WordPress Developer Resources

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_get_nav_menu_items() | Function | WordPress Developer Resources

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

$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);

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

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

今日はここまで

関連する記事



こちらはいかが?


コメントを残す