私のWordPressサイトにはたくさんの投稿があり、すべてトップレベルのカテゴリとその中のサブカテゴリでまとめられています。
メインページにカテゴリページを表示するナビゲーションがあります。クリックすると、そのトップレベルカテゴリ内のすべての投稿が「アーカイブ」として取得されます。
これらのカテゴリページのいずれかにアクセスしたときに予想されるとおりにカテゴリが強調表示されますが、このカテゴリ内の単一の投稿にアクセスしたときには強調表示されません。私はこの記事が属するトップレベルのカテゴリーがハイライトされ、それが意図された振る舞いであるかのように見えると思います。
だから、私の質問は、次のとおりです。単一の投稿を表示しているときに、メインナビゲーションでその投稿が属するカテゴリをハイライト表示にするにはどうすればよいですか。
このサイトは非常に多くのトラフィックを受け取るので、私はスケーラブルな解決策を望んでいます。
いくつかの wp_nav_menu
に付属の組み込みCSSクラス があります。
あなたの場合、あなたは現在のカテゴリクラスのようなものを探しています。それはnotincludedです。しかし、それをCSSクラスに簡単に追加できます。
function wpse_134409_current_category_class($classes, $item) {
if (
is_single()
&& 'category' === $item->object
&& in_array($item->object_id, wp_get_post_categories($GLOBALS['post']->ID))
)
$classes[] = 'current-category';
return $classes;
} // function wpse_134409_current_category_class
add_filter('nav_menu_css_class', 'wpse_134409_current_category_class', 10, 2);
注意してください:このコードはテストされていません!
これで、メニュー項目を次のようにターゲティングできます。
#menu-id li.current-category {
/* styles */
}