我有一个自定义帖子类型和一个自定义分类法。每个自定义帖子类型都分配给一个术语。我为自定义分类中的每个术语添加了一个菜单条目。每个菜单条目后面是一个概述页面,其中包含分配给该术语的所有自定义帖子。如果您单击其中一个海关帖子,则会打开一个详细信息页面。但是,如果您在详细信息页面上,分类术语的相应菜单条目将不再标记为活动。我究竟做错了什么?
问问题
4488 次
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
我已经为此苦苦挣扎了一段时间。这就是我解决问题的方法。
- 进入wordpress后端->外观->菜单
- 将一些自定义类添加到您希望在分类或存档页面上激活的菜单项(如果您没有看到 css 类选项,请转到屏幕选项并激活它)。例如,我将“活动”类放在菜单项上。
- 转到 archive.php 或 taxonomy.php 或您正在使用的任何模板,并为您刚刚添加的 .active 类添加一些样式,例如:
<style> .menu li.active { background-color:#000; } </style>
当然,您可以使用其他方法将 css 注入存档页面。
于 2016-12-15T17:29:54.500 回答