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

説明

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() 場所に、メニューが割り当てられているかを確認する

関連項目

wp_nav_menu()、has_nav_menu()

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

コメント

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