説明
wp_nav_menu() は、管理画面で作成したメニューを出力する関数です。
基本構文
wp_nav_menu( array $args = array() ): void|string|false
引数
$args:theme_location、menu、container、menu_class、depth、walker、echoなど
戻り値
echo が false のときは文字列。
使い方(サンプル)
wp_nav_menu( array(
'theme_location' => 'header',
'container' => 'nav',
'depth' => 2,
) );
注意点
- メニューが未設定のときは、既定でページ一覧が出力されます。
fallback_cbをfalseにすると何も出力されません。 - HTMLを細かく制御するには、
walkerやnav_menu_css_classフィルターを使います。
実務での使いどころ
- 管理画面で作ったメニューを、テーマの決まった場所に、出力するとき。
containerや、menu_classを指定して、マークアップを、整えるとき。
よくあるミスと対処
theme_locationを、指定していない。管理画面の割り当てと、結びつかない。- メニューが、割り当てられていないとき、代わりに、固定ページの一覧(
fallback_cb)が出る。出さないときは、'fallback_cb' => falseを指定する。 echoの既定はtrue。文字列として受け取りたいなら、'echo' => falseを指定する。depthを指定せず、深い階層のメニューが、そのまま出力される。
NG例
wp_nav_menu(); // theme_location がなく、意図しないメニューが出る場合がある
OK例
wp_nav_menu( array(
'theme_location' => 'header',
'container' => 'nav',
'menu_class' => 'global-nav',
'depth' => 2,
'fallback_cb' => false,
) );
使い分け早見表
| 関数 | 役割 |
|---|---|
wp_nav_menu() |
メニューを、HTMLで出力する |
wp_get_nav_menu_items() |
メニューの項目を、配列で取得する |
has_nav_menu() |
場所に、メニューが割り当てられているかを確認する |
関連項目
register_nav_menus()、has_nav_menu()
公式リファレンス:wp_nav_menu() | Function | WordPress Developer Resources

コメント