覆盖当前选定的菜单项

时间:2012-01-07 作者:Pekka

我有一个WP 3。我主要用作CMS的x站点。菜单链接到各种WordPress页面。

其中一个页面“新闻”是“帖子”页面。

然而,当点击新闻页面上的一篇文章时,菜单中的“新闻”项将失去突出显示,因为该文章未被视为“新闻”的子项。

有没有一种简单的方法可以覆盖菜单中当前突出显示的项目?理想情况下,通过在其上强制设置页面ID。

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

因为我假设你在使用wp_nav_menu(), 应该有一节课current_page_parent 当查看单个帖子时,它将应用于帖子的页面菜单项。

您可以使用此类设置“活动”状态的样式,就像您可能正在使用current_page_item 目前。

如果(出于任何原因)你必须current_page_item 添加了,您可以过滤nav_menu_css_class:

/**
 * Add the class \'current_page_item\' to \'page for posts\' menu item if we\'re
 * viewing a single post.
 * 
 * @param array $class
 * @param object $item The current menu item.
 * @return array
 */
function add_current_class_to_posts_page( $classes, $item )
{
    static $posts_page;

    if ( ! is_single() )
        return $classes;

    if ( ! isset( $posts_page ) )
        $posts_page = get_option( \'page_for_posts\' ); // cache as we may be calling this a lot!

    if ( $item->object == \'page\' && $item->object_id == $posts_page )
        $classes[] = \'current_page_item\'; // this is the posts page!

    return $classes;
}
add_filter( \'nav_menu_css_class\', \'add_current_class_to_posts_page\', 10, 2 );

结束

相关推荐

Way to create pages quickly

我有一个网站结构,我想创建一堆空白页面-每个页面都有一个特定的父页面和模板。有没有比一个接一个更快的方法?可能是插件?