2008-10-20 61 views
0

我有一个WordPress站点(2.6.2),其中我已将主页设置为静态页面而不是普通帖子页面。此页面的ID是2,所以在WordPress模板我已经改变了wp_list_pages看起来像这样:WordPress:我摆脱了第二个“家”页面,但它不够好

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

这工作得很好,但现在的主页并没有得到“亮起来”时,它的选择(因为实际上它是被选中的page_id 2,并且它不显示在菜单中)。有没有简单的解决方法呢?

如果没有,概括地说,有什么困难的方法呢?制作我自己的wp_list_pages函数版本?

谢谢!

回答

2

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

所以,你可以服务器端自定义(黑客)的wp_list_pages功能,但这里有一个客户端的选项,如果你选择:

使用jQuery库(方便它与WP 2.2 +),呼叫:

wp_enqueue_script('jquery'); 

或加载自己的版本:

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

现在加一点JA的vascript在你的模板,是这样的:

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'); 
} 

一:第一部分呈现在你的菜单中的第一个环节是家用/头版链接。如果不是,请通过href值或位置进行选择。这是一个被现在的位置:

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

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

例子:

< DIV ID = “导航” >

<ul>
<li> <a>链接0 < /一个> < /锂>
<利> <一个>链接1 < /一个> < /锂>
<利> <一个>链路2 < /一个> < /锂>
<利> <a>链接3 </a > </li >
<利> <一个>链路4 < /一个> < /锂>
<利> <一个>链路5 < /一个> < /锂>
</UL >

</div >


注意事项:

  1. 检查你的菜单DIV ID(此处显示#nav
  2. 嵌套的UL /李菜单结构(使多个级别的实际名称)将需要额外的代码来正确选择正确的元素。
  3. 如果菜单链接将发生变化,请勿使用位置选择技术,请使用其他挂钩,如链接到主页/首页的href值。
  4. if(window.location.href =='http://www.example.com/')部分可能需要是一个正则表达式,如果涉及更多变体(https,多个子域等)。
+0

感谢您的好回答。虽然简单地看,但我认为黑客一个新的wp_list_pages函数可能不那么黑客。如果我这样做,我也会发布我的代码。或者,也许我会利用你的答案进入JQuery :) – 2008-10-20 22:39:18

2

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

关于这个问题的WordPress手册条目可以找到here

+0

我的评论来自2008年10月20日(我在回答中):谢谢鲁本,但我已经完成了你的建议,这是问题的一部分,而不是答案。问题是如何让WP正确处理新的主页。 – 2010-04-30 14:45:27

相关问题