概要
wp_nav_menu
フィルタは、ナビゲーションメニューを表示する際に使用される非常に重要なフィルタです。このフィルタを利用すると、ウィジェット、カスタムメニュー、特定のセクションやページに基づいて、ナビゲーションメニューの出力をカスタマイズすることができます。以下は、このフィルタがよく使われる機能の例です。
- メニューアイテムのタイトルを変更する
- メニューにカスタムクラスを追加する
- 特定の条件に基づいてメニューアイテムを削除する
- アイコンや画像をメニューアイテムに追加する
- 多言語対応のメニューを作成する
- ナビゲーションメニューの構造を変更する
- パラメータを通じて動的にメニューを生成する
- レスポンシブデザインに対応したメニューを作成する
構文
add_filter('wp_nav_menu_items', 'カスタム関数名', 10, 2);
パラメータ
$items
(string):メニューのHTML内容。$args
(object):渡される引数のオブジェクトで、メニューの設定が含まれています。
戻り値
- 変更されたメニューのHTMLコード(string)。
関連する関数
このフィルタを使用可能なバージョン
- WordPress 2.9 から使用可能です。
フィルタが含まれるワードプレスのコアファイルのパス
/wp-includes/nav-menu.php
サンプルコード
サンプルコード 1
add_filter('wp_nav_menu_items', 'add_custom_menu_item', 10, 2);
function add_custom_menu_item($items, $args) {
if ($args->theme_location == 'primary') {
$items .= '<li><a href="https://example.com/new-item">新しいアイテム</a></li>';
}
return $items;
}
このサンプルコードは、プライマリーナビゲーションメニューに「新しいアイテム」というリンクを追加します。
サンプルコード 2
add_filter('wp_nav_menu_css_class', 'add_custom_css_class', 10, 3);
function add_custom_css_class($classes, $item, $args) {
if ($item->title === '特定のページ') {
$classes[] = 'special-class';
}
return $classes;
}
このサンプルコードは、特定のメニューアイテムにカスタムCSSクラスを追加します。
サンプルコード 3
add_filter('wp_nav_menu_objects', 'remove_menu_items');
function remove_menu_items($items) {
foreach ($items as $key => $item) {
if ($item->title == '取り除くアイテム') {
unset($items[$key]);
}
}
return $items;
}
このサンプルコードは、指定したメニューアイテムをナビゲーションメニューから削除します。
サンプルコード 4
add_filter('wp_nav_menu_item_title', 'add_icon_to_menu_item', 10, 4);
function add_icon_to_menu_item($title, $item, $args, $depth) {
if ($item->title == 'ホーム') {
return '<i class="icon-home"></i>' . $title;
}
return $title;
}
このサンプルコードは、「ホーム」というタイトルのメニューアイテムにアイコンを追加します。
サンプルコード 5
add_filter('wp_nav_menu_link_attributes', 'set_custom_attributes', 10, 4);
function set_custom_attributes($atts, $item, $args, $depth) {
if ($item->title === '特定のアイテム') {
$atts['target'] = '_blank';
$atts['rel'] = 'noopener noreferrer';
}
return $atts;
}
このサンプルコードは、特定のメニューアイテムに対して target="_blank"
属性を追加し、新しいタブで開くように設定します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |
非推奨または削除されたバージョン
- 現在のところ、
wp_nav_menu
フィルタは非推奨または削除されているバージョンはありません。