web-dev-qa-db-ja.com

メニュー項目をカテゴリーの現在のメニュー項目としてマークする

WP Webサイトにいくつかのカテゴリがあります。ユーザーがこのカテゴリを見て、そこから投稿したときに、メニュー項目の1つをアクティブとしてマークします。

どのように私は私のメニュー項目の1つをこのカテゴリーと投稿のためにクラス "current-menu-item"を持つように設定することができますか?

1
moonvader

私はこの機能を使います。まず第一に、あなたはあなたのメニュー項目にいくつかのカスタムクラスを追加しなければなりません(スクリーンオプションでクラス入力を許します、それはデフォルトで見えません)。

function mark_menu_item_as_active($classes, $item) {

    if( in_array('my-custom-class',$classes) && ( is_category('my-category') /* OR ...*/  ) )   {
        $classes[] = 'current-menu-item';
    }

    return $classes;
}
add_filter('nav_menu_css_class', 'mark_menu_item_as_active', 10, 2);

この関数はすべてのメニュー項目を繰り返し処理するので、そのカスタムメニュークラスを使ってターゲット項目を見つけることができます。それからあなたはあなたが持っているどんな条件(is_category、...)もチェックし、そしてそのクラスに別のクラスを追加します(current-menu-item、...)。

2
Marek