顶级菜单项上的“当前”类,带有wp_nav_menu

时间:2013-08-09 18:45:55

标签: php wordpress

我用wp_nav_menu创建了一个wordpress菜单。

我的结构如下:

    • 分类

如果我在“类别”中打开帖子,则菜单的顶层没有“当前”类 - 仅在“类别”上。仅与页面嵌套在多级菜单上工作正常。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

1)编写自定义助行器http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_Function以在调用该类别时添加当前类;

2)或者,(不是最优雅的):找到您想要的菜单项的页面ID - 在下面的示例中为1000 - 要突出显示为当前,请选择该类别 - is_category - 然后使用jQuery:

添加当前类 - addClass
<?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 } ?>

答案 1 :(得分:0)

啊......在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;    
}