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;
}

但是还有一个问题。我还想将类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 回答
0

你可以通过 jquery 来做到这一点:

<script type="text/javascript">
    $(document).ready(function(){
        var title = $(document).attr('title');

        $(".maincat-list li a:contains('"+title+"')").css("text-decoration", "underline");

    });
</script>
于 2013-06-26T09:15:06.270 回答
0

我已经为此苦苦挣扎了一段时间。这就是我解决问题的方法。

  1. 进入wordpress后端->外观->菜单
  2. 将一些自定义类添加到您希望在分类或存档页面上激活的菜单项(如果您没有看到 css 类选项,请转到屏幕选项并激活它)。例如,我将“活动”类放在菜单项上。
  3. 转到 archive.php 或 taxonomy.php 或您正在使用的任何模板,并为您刚刚添加的 .active 类添加一些样式,例如:
<style>
.menu li.active {
background-color:#000;
}
</style>

当然,您可以使用其他方法将 css 注入存档页面。

于 2016-12-15T17:29:54.500 回答