2008-10-20 53 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

相關問題