在自定义开机自检类型上突出显示菜单项?

时间:2012-05-02 作者:Rob

我目前正在使用此代码显示页面菜单。我正在使用CSS以类为目标current_page_item 在您进入具有自定义帖子类型的页面之前,这一切都很正常。

当用户所在的页面是自定义帖子类型(如新闻或事件)时,如何定位该类?

<div id="menu-repeat">
<?php $args = array(
\'depth\'        => 1,
\'show_date\'    => \'\',
\'date_format\'  => get_option(\'date_format\'),
\'child_of\'     => 0,
\'exclude\'      => \'1908, 6282, 6380\',
\'include\'      => \'\',
\'title_li\'     => __(\'\'),
\'echo\'         => 1,
\'authors\'      => \'\',
\'sort_column\'  => \'menu_order, post_title\',
\'link_before\'  => \'\',
\'link_after\'   => \'\',
\'walker\' => \'\' ); ?>
<ul><div class="menu-button"><?php wp_list_pages( $args, \'sort_column=menu_order\' ); ?></div></ul>

2 个回复
最合适的回答,由SO网友:mrwweb 整理而成

如果这是一个一次性的网站,我建议使用CSS。从哲学上讲,添加current_page_item 当菜单项不是真的时,你也会觉得有点不对劲。

只要您使用body_class() 在您的<body> 元素中,应该有一个名为single-{event} 其中,{event}是post类型的id。因此,添加选择器.single-{event} .page-item-{ID} 其中,{ID}是事件页面的页面ID(您也可以在菜单项上看到该类)。

SO网友:Wyck

我认为这是一个bug。我看到的唯一解决方案就是trac记录#17590

function my_page_css_class( $css_class, $page ) {
    global $post;
    if ( $post->ID == $page->ID ) {
        $css_class[] = \'current_page_item\';
    }
    return $css_class;
}
add_filter( \'page_css_class\', \'my_page_css_class\', 10, 2 );
另一种方法是使用一些javascript魔术插入一个类,使用addClass

结束

相关推荐