【问题标题】:WordPress: I got rid of the second "home" page, but it's not good enoughWordPress:我去掉了第二个“主页”页面,但还不够好
【发布时间】:2010-09-18 04:55:45
【问题描述】:

我有一个 WordPress 站点 (2.6.2),其中我将主页设置为静态页面,而不是普通的帖子页面。此页面的 ID 为 2,因此在 WordPress 模板中我将 wp_list_pages 更改为如下所示:

<?php wp_list_pages('exclude=2&title_li=&depth=1' ); ?>

这很好用,但是现在主页在被选中时不会“亮起”(因为实际上它是 page_id 2 被选中,并且它没有显示在菜单中)。有什么简单的方法吗?

如果不是,概括地说,解决这个问题的难点是什么?制作我自己的wp_list_pages 函数版本?

谢谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    将静态页面设置为首页不会突出显示菜单链接,这是问题的核心。

    因此,您可以在服务器端自定义(破解)wp_list_pages 函数,但如果您愿意,这里有一个客户端选项:

    使用jQuery库(方便WP 2.2+自带),调用:

    wp_enqueue_script('jquery');
    

    或加载您自己的版本:

    wp_enqueue_script( 'jquery', '/path/to/your/jquery.js', false, '1.2.1');
    

    现在在您的模板中添加一些 javascript,例如:

    if(window.location.href == 'http://www.example.com/'){ //checks for root path - "home" ('http://www.example.com/?p=7' or 'http://www.example.com/2008-10/7' will not match)
        jQuery('#nav > ul > li > a:first').addClass('current_page_item');
    }
    

    a:first 部分假定菜单中的第一个链接是主页/首页链接。如果不是,请通过 href 值或位置选择。这是按位置:

    ~~~~~~~~~~~~~~~

    jQuery(jQuery('#nav > ul > li > a')[3]).addClass('current_page_item'); //add 'current_page_item' css class so menu item highlighting occurs
    

    例子:


    注意事项:

    1. 检查您的菜单 div id 的实际名称(#nav 此处显示)
    2. 嵌套的 ul/li 菜单结构(因此不止一层)需要额外的代码才能正确选择正确的 a 元素。
    3. 如果菜单链接要改变,不要使用位置选择技术,使用另一个钩子,比如主页/首页链接的 href 值。
    4. 如果涉及更多变体(https、多个子域等),if(window.location.href == 'http://www.example.com/') 部分可能需要是正则表达式。

    【讨论】:

    • 感谢您的出色回答。不过,即使简单地看一下,我认为破解一个新的 wp_list_pages 函数可能会少一些 hacky,总而言之。如果我这样做,我也会发布我的代码。或者也许我会利用你的回答进入 JQuery :)
    • 太棒了,谢谢 Micah。我终于明白了:只是在模板中注释掉了标题行,在 Wordpress 中切换了主页,我们很好!
    【解决方案2】:

    以管理员身份登录后,您可以在“管理”>“设置”>“阅读”面板中将静态页面设置为首页。

    可以在 here 找到有关此主题的 Wordpress 手册条目。

    【讨论】:

    • 我在 2008 年 10 月 20 日发表的评论(我给出了答案):谢谢鲁本,但我已经按照您的建议做了,这是问题的一部分,而不是答案。问题是如何让 WP 正确处理新主页。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多