1

カスタム投稿タイプとカスタム分類があります。各カスタム投稿タイプは、1 つの用語にのみ割り当てられます。カスタム分類法で用語ごとにメニュー エントリを追加しました。各メニュー エントリの後ろには、この用語に割り当てられたすべてのカスタム投稿を含む概要ページがあります。税関の投稿のいずれかをクリックすると、詳細ページが開きます。ただし、詳細ページを表示している場合、分類用語に対応するメニュー エントリはアクティブとしてマークされていません。私は何を間違っていますか?

4

4 に答える 4

3

わかりました、私は私の問題に対して次の解決策を見つけました:

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);

function special_nav_class($classes, $item) {
    global $naventries;
    $naventries[$item->ID] = $item;
    if($item->type == 'taxonomy') {
        global $post;
        $terms = get_the_terms($post->ID, $item->object);

        $currentTerms = array();
        if ( $terms && ! is_wp_error( $terms ) ) {
            foreach($terms as $term) {
                $currentTerms[] = $term->slug;
            }
        }

        if(is_array($currentTerms) && count($currentTerms) > 0) {
            $currentTerm = get_term($item->object_id, $item->object);
            if(in_array($currentTerm->slug, $currentTerms)) {
                $classes[] = 'current-menu-item';
            }
        }
    } 

     return $classes;
}

しかし、まだ 1 つの問題が残っています。また、クラスcurrent-menu-ancestorを親要素に追加したいと考えています。経由で親要素の ID を$item->menu_item_parent取得しましたが、この ID を使用して対応するメニュー エントリのクラスを変更する方法がわかりません。

于 2012-05-24T14:59:18.413 に答える
1
<script type="text/javascript">
    // Active state if you have a pagetitle on the result page
    var currentTitle = $('.header h2').html();
    $('.nav ul.menu li').find(':contains('+currentTitle+')').parent().addClass('current-menu-item');
</script>

したがって、クラスを追加したいメニュー項目と同じ名前のページタイトルがある場合、私のソリューションは機能しますcurrent-page-item

もちろん、これを機能させるには jQuery をインストールする必要があります。

編集: これをアーカイブ分類ページのループの下に配置してください。

于 2012-08-01T12:47:29.930 に答える