概要
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
関数は特定のバージョンで非推奨もしくは削除されていません。