有没有办法将类添加到非当前菜单项?

时间:2016-02-15 作者:Feel The Noise

使用时wp_nav_menu 函数,当前菜单项标记通常如下所示:

<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-19">
    <a href="http://domain.com/page-name/">Page Name</a>
</li>
我想知道,如果选择了一个项目,是否有办法将类添加到菜单上的非当前项目。类似于non-current-menu-item.

它将添加一些非常有趣的css可能性。

提前谢谢你。

1 个回复
最合适的回答,由SO网友:Feel The Noise 整理而成

的标记wp_nav_menu 可以使用完全自定义Walker

以下是我使用的代码:

功能。php

class Walker_Menu extends Walker {

    var $db_fields = array(
        \'parent\' => \'menu_item_parent\', 
        \'id\'     => \'db_id\' 
    );

    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

        if (is_front_page()) {
            $output .= sprintf( "\\n<li id=\'menu-item-%s\'><a href=\'%s\'>%s</a></li>\\n",
            sanitize_title($item->title),
            $item->url,
            $item->title
        );
        }
        else {
            $output .= sprintf( "\\n<li id=\'menu-item-%s\'%s><a href=\'%s\'>%s</a></li>\\n",
            sanitize_title($item->title),
            ( $item->object_id == get_the_ID() ) ? \' class="current-menu-item"\' : \'class="non-current-menu-item"\',
            $item->url,
            $item->title
        );
        }
    }

}
标题。php

wp_nav_menu(array(
    \'menu\'    => \'Main Menu\',
    \'walker\'  => new Walker_Menu()
));
它将类非当前菜单项添加到除当前菜单项之外的每个li元素中,并且不会在首页上这样做。

非常感谢dingo\\u d指出了这个班级!

相关推荐

Use Post ID in functions.php

我的functions.php. 它工作得很好:当预订时,它会给我发电子邮件。易于理解的然而,我希望它能给我发送该预订的post ID,而不仅仅是“你好,世界!”消息帮助function add_to_system() { // get post meta // $email = get_post_meta(\'\',$post_id) // $post_id = get_queried_object_id(); mail(\'michael.mc