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

説明

has_nav_menu() は、指定した位置(ロケーション)にメニューが割り当てられているかを判定する関数です。

基本構文

has_nav_menu( string $location ): bool

引数

  • $location:ロケーション名

戻り値

割り当てられていれば true。

使い方(サンプル)

if ( has_nav_menu( 'header' ) ) {
	wp_nav_menu( array( 'theme_location' => 'header' ) );
}

注意点

  • メニューが空でも、割り当て済みなら true になります。

実務での使いどころ

  • メニューが割り当てられているときだけ、メニューの枠を出すとき。
  • メニューがないときに、代わりの表示に、切り替えるとき。

よくあるミスと対処

  • 登録されているかではなく、割り当てられているかを、判定する。register_nav_menus() しただけでは、false。
  • 場所のキーを、間違えている。
  • wp_nav_menu() の中の、fallback_cb だけで、枠まで制御しようとしている。枠の出力は、この関数で、先に判定する。

NG例

echo '<nav class="global">';
wp_nav_menu( array( 'theme_location' => 'header' ) );
echo '</nav>'; // メニューがなくても、枠が出る

OK例

if ( has_nav_menu( 'header' ) ) {
	echo '<nav class="global">';
	wp_nav_menu( array( 'theme_location' => 'header', 'container' => false ) );
	echo '</nav>';
}

使い分け早見表

関数 役割
has_nav_menu() 場所に、メニューが割り当てられているかを確認する
register_nav_menus() メニューの場所を、登録する
wp_nav_menu() メニューを出力する

関連項目

wp_nav_menu()、register_nav_menus()

公式リファレンス:has_nav_menu() | Function | WordPress Developer Resources

コメント

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