register_nav_menus()


WordPressのregister_nav_menus()関数は、テーマ内で使用するナビゲーションメニューを登録するために使用されます。この関数を使うことで、複数のメニュー位置を定義し、管理画面からそれらのメニューを割り当てることができます。

構文

register_nav_menus( array $locations = array() );
  • $locations(array) — メニューの位置を定義する連想配列。キーはメニューの位置を表すスラッグ、値は管理画面に表示されるメニュー名です。

例1: シンプルなメニューの登録

この例では、ヘッダーとフッターに表示される2つのメニュー位置を登録します。

register_nav_menus( array( 'header-menu' => 'ヘッダーメニュー', 'footer-menu' => 'フッターメニュー' ) );

例2: 複数のメニュー位置を登録

複数のメニュー位置を一度に登録する例です。

register_nav_menus( array( 'primary' => 'プライマリメニュー', 'secondary' => 'セカンダリメニュー', 'social' => 'ソーシャルメニュー' ) );

例3: テーマのfunctions.phpでの使用

テーマのfunctions.phpファイル内でメニューを登録する例です。

function my_theme_setup() { register_nav_menus( array( 'header-menu' => 'ヘッダーメニュー', 'footer-menu' => 'フッターメニュー' ) ); } add_action( 'after_setup_theme', 'my_theme_setup' );

例4: メニュー位置の確認

登録されたメニュー位置が存在するか確認する例です。

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

例5: カスタムメニュー位置の追加

カスタムメニュー位置を追加し、テンプレートファイルで表示する例です。

register_nav_menus( array( 'custom-menu' => 'カスタムメニュー' ) );

例6: メニュー位置の動的表示

条件に応じてメニュー位置を動的に表示する例です。

if ( has_nav_menu( 'primary' ) ) { wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'primary-menu' ) ); }

注意点

  • メニュー位置を登録する際は、スラッグが一意であることを確認してください。
  • テーマのfunctions.phpファイル内でregister_nav_menus()を呼び出す際は、after_setup_themeフックを使用することを推奨します。
  • メニュー位置をテンプレートファイルで表示する際は、wp_nav_menu()関数を使用します。

関連機能: