在WordPress中将菜单项假标记为Current_Page_Item/Active

时间:2012-09-14 作者:ragulka

我有一个名为Books的自定义帖子类型和如下页面结构:

Home
Products & Services
- Services
- Products
-- Books
我正在使用Wordpress自定义菜单进行第一级导航(水平显示),并使用wp\\u list\\u页面根据从第一级导航中选择的页面打印出子导航(子菜单垂直显示)。

为了让事情更有趣/更糟,如果我正在查看产品或书籍页面,我只在子菜单中显示书籍。

现在,我想将活动和当前的\\u page\\u项目/current\\u page\\u祖先类添加到产品和;查看单个书籍时的服务、产品和书籍(自定义帖子类型)。

我该怎么做?

3 个回复
SO网友:helgatheviking

您可以通过添加自定义类nav_menu_css_class 过滤器,如下所示:

function wpa_65178_nav_class( $classes, $item )
{
    if( is_singular(\'book\') && $item->title == \'Products & Services\' )
    {
        $classes[] = \'current_page_ancestor\';
    }
    return $classes;
}
add_filter( \'nav_menu_css_class\', \'wpa_65178_nav_class\', 10, 2 );

SO网友:Z. Zlatev

首先想到的是使用导航菜单使用的内置助行器。应该是这样的

$custom_walker = new Walker_Nav_Menu();
wp_list_pages( array( \'walker\' => $custom_walker ) );
希望对你有帮助

SO网友:markratledge

您可以使用php条件加载jQuery脚本,以便在自定义post类型处于活动状态时使用,然后使用jQueryaddClass 这个current-menu-item 按ID号分类到菜单项。在页面源代码中查找每个项目的菜单ID。如果您更改菜单,这些将更改;这是不可能的。

<?php if ( \'book\' == get_post_type()) { ?>

<script type="text/javascript">

jQuery(function($) {
$(document).ready(function() {
$(\'#menu-main-menu li.menu-item-1000\').addClass(\'current-menu-item\');
}); });

</script>

<?php } ?>

结束

相关推荐

Wordpress Custom Menus Issue

在我的模板中,我使用这样的调用来输出一些自定义菜单:<?php wp_nav_menu(array(\'container_class\' => \'secondary-navigation\', \'theme_location\' => \'secondary\')); ?> 自从升级到WordPress 3.1.4后,我就可以获得完整的页面列表,而不是自定义菜单我看到修复程序(通过谷歌)说我应该添加以下内容来修复此问题:\'fallback_cb\' => f