wp_nav_menu()で現在アクティブなページを手動で指定する方法


9

使用時に現在アクティブなページを手動で指定する方法はありwp_nav_menu()ますか?

「製品」ページがあり、そのページにはさまざまな(動的)カスタム分類法へのリンクがあります。これらの分類の1つをクリックすると、「製品」ページは表示されたままですが、「製品」ページがwp_nav_menu()開いているという事実への参照が失われます。これを修正する方法はありますか?

ありがとう!

ジョン

回答:


12

current_page_itemクラスを1つのメニュー項目に追加するだけの場合は、nav_menu_css_classフィルターに接続し、必要に応じてそのクラスを追加できます。メニューが印刷されるときに呼び出さます。

メニュー全体にアクセスしてクラスを追加するwp_get_nav_menu_items場合は、フィルターにフックして$items配列全体を取得します。classes個々のアイテムのプロパティを編集できます。


2

@Jon<body <?php body_class(); ?>> WordPressを 使用している限り、ドロップダウンメニューを使用current_page_itemしているcurrent_page_parent場合は、クラスをメニューに割り当てます。


1
こんにちはクリス、返信ありがとうございます。<body <?php body_class();を使用しています。?>>タグですが、問題は、wp_nav_menu()に関する限り、クリックする分類法はそれとは無関係です!だから、私はwp_nav_menu()に言う必要があります-ページがXの場合、 "Products"をcurrent_page_parentとして表示します。
Jon

0

Janはnav_menu_css_classフィルターについて言及していたので、調べてみたところ、この例が参考になりました。ソース:https ://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class

function my_special_nav_class( $classes, $item ) {
    if ( is_single() && $item->title == 'Blog' ) {
        $classes[] = 'special-class';
    }
    return $classes;
}    
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.