wp_nav_menu() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました