web関連

【wordpress】外観→メニューの情報を個別に出力する方法

2019/10/29

2019/11/02

【wordpress】外観→メニューの情報を個別に出力する方法

wp_nav_menu()で出力せずにメニューをセレクトボックスで出力をしたかった時の備忘録

wp_get_nav_menu_items()を使って情報を個別に出力する

wp_get_nav_menu_items()を使えばメニューに設定されている項目を取得できるみたい

<?php
$menu_name = 'メニューの名前';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) :
    $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

    $menu_items = wp_get_nav_menu_items($menu->term_id);

    foreach ( (array) $menu_items as $key => $menu_item ) : ?>
    	//URL出力
		<?php echo $menu_item->url; ?>
		//ページ名出力
		<?php echo $menu_item->title; ?>
<?php endforeach; ?>
<?php else: ?>
<?php endif; ?>

メニューに設定されている項目を取得することができた

参考

関数リファレンス/wp get nav menu items

ずっとwp_nav_menu()でメニュー出力していて不便を感じるときがあったけど今度からこれ使って行こうかな

外観→メニューに設定されている項目じゃなくて、メニュー自体を一覧で表示したいって時はwp_get_nav_menus()使うといいみたい

参考

▼WordPressの外観メニュー情報を取得する方法

管理画面側カスタマイズ時に使えそう
 

「$menu_name = 'メニューの名前';」のところに設定する名前は「register_nav_menus()」で有効化したメニュー(英語)を入れた