wp_nav_menu()
を使用しているときにどのページが現在アクティブであるかを手動で指定する方法はありますか?
私は "製品"ページを持っています、そしてそのページ上で私は様々な(動的な)カスタム分類法へのリンクを持っています。これらの分類法の1つをクリックしても、 "Products"ページに留まりますが、wp_nav_menu()
は、まだ "Products"ページにいるという事実に言及していません。これを修正できる方法はありますか?
ありがとうございます。
ジョン
1つのメニュー項目にcurrent_page_item
クラスを追加するだけの場合は、nav_menu_css_class
フィルタに接続し、必要に応じてそのクラスを追加できます。メニューが表示されるときは と呼ばれます 。
メニュー全体にアクセスしてクラスを追加する場合は、wp_get_nav_menu_items
フィルタにフックして、全体の$items
配列を取得します。個々の項目のclasses
プロパティを編集することができます。
@Jon <body <?php body_class(); ?>>
を使用している限り、WordPressはドロップダウンメニューを使用している場合はcurrent_page_item
と共にクラスcurrent_page_parent
をメニューに割り当てます。
Janはnav_menu_css_classフィルタについて言及しました、それで私はそれを調べました、そして、この例は私にとって役に立ちましたSource: 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 );