如何突出显示子页面的菜单?

时间:2011-06-16 作者:Avery Chan

编辑:过去是

如何强制页面is_archive == true?

我试图解决错误的问题。我应该查看应用于菜单项的类,而不是强制帖子/页面具有特定属性。“博客”菜单项具有current-page-ancestor 应用于它的类。我可以基于此设置菜单样式。

原始问题:

我有自己的主题archives.php 模板,以便创建一个页面,尝试列出查看归档文件的不同方式,并为用户提供一个浏览归档文件的位置。

我使用WP管理页面创建了一个页面,并将其父页面设置为“博客”页面。“博客”页面是发布我所有帖子的页面。我在顶部有一个菜单,现在,“博客”页面下的每个子页面都会使菜单突出显示“博客”(这是正确的行为)。具体来说,菜单项具有current_page_* 应用于它。加载时不会发生这种情况blog/archives (第一段中创建的模板/页面)。

因此,当我单击博客帖子的日期时,它会将我带到一个存档的帖子页面,看起来是这样的(请注意,博客菜单项高亮显示):

Archived Date Posts

当我转到存档时,它看起来是这样的(请注意,菜单项没有突出显示):

Archives Page

我看着$wp_query 看看有什么不同。我看到了is_archiveis_home 在菜单项样式正确的情况下是正确的。

如何强制我的页面is_archive == true? 我试图插入$wp_query->set(\'is_archive\', 1); 在调用之前get_header(); 在我的模板中,但这不起作用。我还查看了WP管理仪表板,看看是否有什么东西可以单击以强制将页面视为存档。

编辑:明确地说,我正在寻找WP解决方案。我知道我可以对CSS进行硬编码,以使菜单项按我希望的方式显示,但这似乎不是正确的做法。

5 个回复
最合适的回答,由SO网友:Avery Chan 整理而成

根据问题的变化,答案是:

查看应用于所需菜单项的css类current-page-ancestor 应用于它

  • 在样式表中进行适当的更改,以在出现此类时设置菜单样式
  • SO网友:Chip Bennett

    这个archives.php 模板文件是静态页面的自定义页面模板文件。这个is_archive()is_home() 条件分别适用于博客帖子存档和博客帖子索引。所以,你never 即将获得is_archive() 显示的输出时返回truearchives.php.

    有你的archives.php 静态页面出现在菜单中:

    创建一个名为whatever的新静态页面,例如“Archives”(但它完全是任意的)

  • 指定archives.php 此静态页面的自定义页面模板将此静态页面添加到自定义导航菜单中,然后,您应该会看到它在菜单中正确高亮显示。

  • SO网友:Alex Thomas

    当您在存档页面上时,是否只需要突出显示博客选项卡亚历克斯·托马斯38分钟前

    是。这就是我所担心的。我想有一种简单的方法可以重新表述这一点,即我的自定义模板页面无法识别为存档页面Avry 18分钟前

    如果是这种情况,你可能会有点粗鲁,只需在档案中设置博客选项卡的样式。php模板,使用<style>...</style> 或者使用jquery为blog选项卡提供所选的类:

    $(\'#blogtabid\').addClass(\'selectedclass\');
    
    那怎么样?

    SO网友:two7s_clash

    你去$wp_query 对象

    $wp_query->is_archive = true;

    SO网友:xLRDxREVENGEx

    最近我遇到了类似这样的事情,因为我强调了单个帖子是否处于活动状态的术语,老实说,我不得不使用一些jquery。虽然不太好看,但现在还可以用。Wordpress缺少这个功能,我同意sucks 您可以始终使用函数为某些页面加载它。

    Example:

    function wpse_20163_navstyle() {
        if(is_archive()) { ?>
            <script type="text/javascript">
            jQuery(document).ready(function(){
                jQuery(\'#blogtabid\').addClass(\'selectedclass\');
            });
            </script>
        <? }
    add_action(\'wp_head\',\'wpse_20163_navstyle\')
    
    如果您想使用$wp_query 确保有一个全球性的

    global $wp_query; 然后你就可以$wp_query->is_archive = true;

    结束

    相关推荐

    Menu API not switching menus?

    我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph