概要
register_nav_menus 関数は、テーマにナビゲーションメニューを追加するために使用されます。この関数を使うことで、WordPressの管理画面でカスタムメニューを作成し、それをテーマ内で表示することが可能になります。以下は、この関数がよく使われる機能の例です:
- ヘッダーメニューの作成
- フッターメニューの作成
- サイドバーメニューの作成
- モバイル用のナビゲーションメニューの作成
- ソーシャルメディアリンクメニューの作成
- カスタムメニュー位置の定義
- ウィジェットエリアでのメニュー表示
- 多言語対応メニューの作成
構文
register_nav_menus( $locations );
パラメータ
$locations(配列): メニューの位置を定義する配列。キーがメニューのロケーション名で、値がメニューの表示名です。
戻り値
この関数は値を返しません。
関連する関数
使用可能なバージョン
register_nav_menus は WordPress バージョン 3.0 以降で使用可能です。
コアファイルのパス
wp-includes/nav-menu.php
サンプルコード
サンプル1: 基本的なメニューの登録
このサンプルは、header と footer の2つのナビゲーションメニューを登録します。
function my_theme_register_menus() {
register_nav_menus( array(
'header-menu' => __( 'Header Menu' ),
'footer-menu' => __( 'Footer Menu' ),
) );
}
add_action( 'after_setup_theme', 'my_theme_register_menus' );
サンプル2: 登録したメニューを表示
このサンプルは、登録した header-menu をテーマのヘッダー部分に表示する方法を示します。
<?php
if ( has_nav_menu( 'header-menu' ) ) {
wp_nav_menu( array(
'theme_location' => 'header-menu',
'container' => 'nav',
) );
}
?>
サンプル3: 複数メニューの登録
このサンプルでは、さらに3つのメニューを追加する方法を示しています。
function my_theme_register_menus() {
register_nav_menus( array(
'primary' => __( 'Primary Menu' ),
'secondary' => __( 'Secondary Menu' ),
'social' => __( 'Social Menu' ),
) );
}
add_action( 'after_setup_theme', 'my_theme_register_menus' );
サンプル4: メニューにアイコンを追加
このサンプルでは、メニューアイテムに Font Awesome のアイコンを追加する方法を示します。
function my_custom_nav_menu_icon( $items ) {
$items = str_replace('<a', '<a class="menu-icon"', $items);
return $items;
}
add_filter( 'wp_nav_menu_items', 'my_custom_nav_menu_icon' );
サンプル5: メニューの位置を条件に応じて変更
このサンプルでは、特定の条件に基づいて異なるメニューを表示する方法を示します。
function my_theme_conditional_menu() {
if ( is_page_template( 'template-custom.php' ) ) {
wp_nav_menu( array( 'theme_location' => 'custom-menu' ) );
} else {
wp_nav_menu( array( 'theme_location' => 'default-menu' ) );
}
}
この関数のアクションでの使用可能性
| アクション名 | 使用可能性 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | 〇 |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
非推奨または削除されたバージョン
現在、register_nav_menus 関数は特定のバージョンで非推奨もしくは削除されていません。