從WordPress 2.7 開始加入了“置頂文章(Sticky Posts)”。置頂文章的作用是希望長時間引起讀者注意,可以表明站點的簡介、版權聲明、友情鏈接的交換原則等。但太長時間的不變也會引起閱讀反感。本文將介紹如何給WordPress創建動態的置頂文章。
從wordpress help forums關于多重循環的各種討論中讓我想到一個使用兩次循環的方法。一個用來查詢并僅顯示某個分類中的文章。另一個用來查詢在所有分類中的所有的文章。第一個查詢是從the codex中復制來的,很容易理解:
| $my_query = new WP_Query('category_name=frontpage&showposts=1'); while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; |
上述代碼的意思是,變量my_query賦值為查詢分類名為frontpage的所有文章的結果,并僅得到一篇文章。關鍵點在最后部分,給變量 do_not_duplicate賦值為返回的單獨文章的ID值。我們在下一步需要這個值。
下面一段代碼是很重要很標準的,可以在許多主題中找到。它能獲取所有日志:
| if (have_posts()) : while (have_posts()) : the_post(); //do stuff like format each postendwhile; |
這段代碼獲取所有的日志,并根據//do stuff這行(依賴于模板)的格式顯示。如果僅僅這樣編寫代碼,就會發生你所選的文章(置頂文章)被顯示兩次的情況(一次在置頂區域,另一次則是在所有其他文章區域)。顯示這樣并不好,所以這里要使用到do_not_duplicate函數了。添加到一個if語句中阻止制定文章顯示兩次。下面是代碼:
| if (have_posts()) : while (have_posts()) : the_post(); if( $post->ID == $do_not_duplicate ) continue;//do stuff like format each post endwhile; |
代碼中的第二個if語句的意思是,獲取所有日志,且當發現一篇文章的ID值與do_not_duplicate的值相等時中斷執行(continue語句),否則顯示根據//do stuff這行的格式顯示所有其他的文章。記住,do_not_duplicate函數值所代表的文章已經被顯示過了。
就這樣當你把所有內容放到一起得到了什么?一個動態的置頂文章!且最棒的部分是當置頂文章被新的一篇代替,之前的文章會在下面所有文章的區域顯示出來(取決于你選擇了多少文章顯示以及文章的發表頻率)。





