has_nav_menu()


WordPressのhas_nav_menu()関数は、指定されたナビゲーションメニューが登録されているかどうかを確認するために使用されます。

構文

has_nav_menu( string $location );
  • $location(string) — ナビゲーションメニューの位置を指定します。テーマで定義されたロケーション(例: ‘primary’)を指定します。

例1: ナビゲーションメニューの存在確認

指定されたロケーションにナビゲーションメニューが登録されているかどうかを確認します。

<?php if ( has_nav_menu( 'primary' ) ) { echo 'プライマリメニューが登録されています。'; } ?>

例2: ナビゲーションメニューの表示

ナビゲーションメニューが登録されている場合にのみメニューを表示します。

<?php if ( has_nav_menu( 'footer' ) ) { wp_nav_menu( array( 'theme_location' => 'footer' ) ); } ?>

例3: 複数のナビゲーションメニューの確認

複数のロケーションに対してナビゲーションメニューが登録されているかどうかを確認します。

<?php if ( has_nav_menu( 'primary' ) && has_nav_menu( 'secondary' ) ) { echo 'プライマリとセカンダリメニューが登録されています。'; } ?>

例4: ナビゲーションメニューの登録がない場合の代替表示

ナビゲーションメニューが登録されていない場合に代替のコンテンツを表示します。

<?php if ( !has_nav_menu( 'primary' ) ) { echo 'プライマリメニューが登録されていません。'; } ?>

例5: ナビゲーションメニューの登録状態に応じたクラスの追加

ナビゲーションメニューが登録されている場合に特定のクラスを追加します。

<?php $menu_class = has_nav_menu( 'primary' ) ? 'has-menu' : 'no-menu'; echo '<div class="' . $menu_class . '">コンテンツ</div>'; ?>

例6: ナビゲーションメニューの登録状態に応じたスタイルの適用

ナビゲーションメニューが登録されている場合に特定のスタイルを適用します。

<?php if ( has_nav_menu( 'primary' ) ) { echo '<style>.header { background-color: #f0f0f0; }</style>'; } ?>

注意点

  • ナビゲーションメニューが登録されていない場合、has_nav_menu()falseを返します。
  • テーマで定義されたロケーションを正確に指定する必要があります。

関連機能: