我用 wp_nav_menu 创建了一个 wordpress 菜单。
我的结构看起来像:
- 页
- 类别
- 页
- 页
- 页
如果我在“类别”中打开一个帖子,菜单的顶层没有“当前”类别——只有“类别”。仅嵌套页面在多级菜单上效果很好。
有没有办法解决这个问题?
1) 编写自定义walker http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_Function以在调用该类别时添加当前类;
2)或者,(不是最优雅的):找到您想要的菜单项的页面 ID -1000
在下面的示例中 - 突出显示为当前,选择该类别 - is_category
- 然后添加当前类 - addClass
- 使用 jQuery:
<?php if (is_category('my-category')) { ?>
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function() {
$('#menu-main-menu li.menu-item-1000').addClass('current-menu-item');
}); });
</script>
<?php } ?>
啊...在wordpress codex中找到了解决方案。这对我来说很好:
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'menu-parent-item';
}
}
return $items;
}