概要
wp_get_nav_menu_object関数は、指定されたナビゲーションメニューのデータを取得するためのWordPressの関数です。この関数は、ナビゲーションメニューの詳細情報を取得し、その情報をカスタマイズした表示や、ナビゲーションメニューの操作に役立ちます。よく使われる目的として以下のようなものがあります:
- メニューのIDを使用してナビゲーションメニューの情報を取得
- テーマのカスタマイズでナビゲーションメニュー情報を活用
- プラグインによるナビゲーションメニューの拡張
- メニューの状態を確認するためのデバッグ
- 特定のメニューが存在するかチェックする際に使用
- メニューアイテムの属性をカスタマイズ
- 現在のページに基づくメニュー作成のロジックに利用
- メニューのスタイルを動的に変更する際に活用
構文
wp_get_nav_menu_object( $menu );
パラメータ
$menu(string|int): メニューのスラッグ、またはID。
戻り値
WP_Termオブジェクト: 取得したナビゲーションメニューのオブジェクト。メニューが存在しない場合はfalseが返されます。
関連する関数
使用可能なバージョン
- この関数は、WordPressのバージョン 3.0 以降で利用可能です。
コアファイルのパス
/wp-includes/nav-menu.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| 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 |
サンプルコード
サンプルコード1: ナビゲーションメニュー情報の取得
$menu = wp_get_nav_menu_object('primary-menu');
if ($menu) {
echo 'メニュー名: ' . esc_html($menu->name);
}
このコードは、スラッグが「primary-menu」のナビゲーションメニューを取得し、その名前を表示します。
サンプルコード2: メニューの速度チェック
$menu = wp_get_nav_menu_object(123); // 123はメニューのID
if ($menu) {
var_dump($menu);
}
指定したIDのメニューが存在する場合、そのオブジェクトの詳細をダンプ表示します。
サンプルコード3: メニューの存在確認
$menu_slug = 'footer-menu';
if (wp_get_nav_menu_object($menu_slug)) {
echo 'フッター用メニューが存在します。';
} else {
echo 'フッター用メニューが存在しません。';
}
このコードは、指定されたスラッグのメニューが存在するかどうかを確認し、メッセージを表示します。
サンプルコード4: メニューの属性取得
$menu = wp_get_nav_menu_object('top-menu');
if ($menu) {
$items = wp_get_nav_menu_items($menu->term_id);
foreach ($items as $item) {
echo '<a href="' . esc_url($item->url) . '">' . esc_html($item->title) . '</a><br>';
}
}
このコードは、ナビゲーションメニューのアイテムを取得し、それぞれのタイトルとURLを表示します。
サンプルコード5: テーマに基づくメニュー表示
$menu = wp_get_nav_menu_object('main-menu');
if ($menu) {
wp_nav_menu(array('menu' => $menu->slug));
}
指定したメニューが存在する場合、そのナビゲーションメニューをテーマ内で表示します。