説明
register_nav_menus() は、テーマ内のメニューの表示位置(ロケーション)を登録する関数です。
基本構文
register_nav_menus( string[] $locations = array() ): void
引数
$locations:ロケーション名と表示名の連想配列
戻り値
戻り値はありません。
使い方(サンプル)
add_action( 'after_setup_theme', function() {
register_nav_menus( array(
'header' => 'ヘッダーメニュー',
'footer' => 'フッターメニュー',
) );
} );
注意点
- 登録すると、管理画面の「外観 → メニュー」で位置を割り当てられるようになります。
- 1つだけ登録する場合は
register_nav_menu()も使えます。
実務での使いどころ
- テーマに、メニューの表示場所(ヘッダー、フッターなど)を、登録するとき。
- 管理画面の「外観 > メニュー」で、場所ごとに、メニューを割り当てられるようにするとき。
よくあるミスと対処
after_setup_themeフックの外(functions.phpの直下)で呼んでいる。動く場合もあるが、フックの中で呼ぶのが推奨。- 登録しただけで、管理画面でメニューを、割り当てていない。
wp_nav_menu()に、何も表示されない(または、代わりのメニューが出る)。 - 場所のキー(
headerなど)が、wp_nav_menu()のtheme_locationと、合っていない。
NG例
register_nav_menus( array( 'header' => 'ヘッダー' ) ); // フックの外で呼んでいる
OK例
add_action( 'after_setup_theme', function () {
register_nav_menus( array(
'header' => 'ヘッダーメニュー',
'footer' => 'フッターメニュー',
) );
} );
使い分け早見表
| 関数 | 役割 |
|---|---|
register_nav_menus() |
メニューの場所を、登録する |
wp_nav_menu() |
メニューを出力する |
has_nav_menu() |
場所に、メニューが割り当てられているかを確認する |
関連項目
公式リファレンス:register_nav_menus() | Function | WordPress Developer Resources

コメント