?php query_posts(cat)?,query_posts()函数 (wordpress日志调用)
我們在修改和自己創新wordpress模板的時候,經常會遇到while(has_post()):the_post()的循環,例如首頁,我們幾乎不能忘記這循環的重要意義,即這是出現文章及其各個屬性的唯一充要條件。不過,我們使用這種文章的循環的時候,應該想到,主頁里顯示了最新文章,分類頁顯示了該分類的最新文章,內容頁只顯示該文章。那么我想在這些頁面不按規則出牌,調用其他文章怎么辦?query_post()幫我們完成這一想法。網上關于它的用法的文章有很多,但都只針對一方面,本文稍詳細的講解其用法。
query_post顧名思義即查詢調用對應條件的文章,其參數即我們需要的條件,這些條件可以是分類、文章ID或title、排序方式等等。具體用法如下:
query_posts('showposts=5&caller_get_posts=1');
while (have_posts()) : the_post();
echo '
';the_title();echo '';endwhile;
wp_reset_query();
上面這段代碼即為本站調用5篇最新文章的代碼。第一行的意思是執行查詢最新的五篇文章,并且不管置頂文章,只管按發表時間的新老輸出。第二行開始是我們熟悉的文章的循環,和我們熟悉的輸出沒有任何區別,最后一行是重置上面的查詢,主要為了防止在按隨即調用輸出時造成這段代碼后面的文章輸出,最好是每次都用上。
接下來詳細講一下query_post()的參數:
wp_query會忽視通過URL接收到的其它的參數,如果想不忽略,可以在調用中使用$query_string。
$query_string=$_GET['p'];//或你其他想要的形式,一般是分類或標簽
query_posts($query_string . "&order=ASC")
設置文章顯示的順序,但是不干擾其余的查詢字符串,參數前須有“&”符號
主頁不顯示某一分類下的日志
if (is_home()) {
query_posts("cat=-3");
}
獲得特定的日志
query_posts('p=5');
獲得特定的頁面
query_posts('page_id=7');????? //只返回單獨頁面7
?>
query_posts('pagename=about'); //只返回《關于》網頁
?>
query_posts('pagename=parent/child'); // 返回母網頁的子網頁
?>
創建所有文章列表,并且提供分頁功能
query_posts($query_string.'posts_per_page=-1');
while(have_posts()) { the_post();
put your loop here ;
}
?>
類別參數
顯示屬于某個類別的文章
cat
category_name
根據ID顯示一個類別
只顯示來自一個類別ID的文章
query_posts('cat=4');
根據名稱顯示一個類別
只顯示屬于某個類別名的文章
query_posts('category_name=Staff Home');
顯示幾個類別及ID
顯示屬于幾個類別ID的文章
query_posts('cat=2,6,17,38');
刪除某個類別的文章
顯示所有的文章,但是類別ID前面有個’-'(負號)負號的類被除外。
query_posts('cat=-3');
刪除屬于類別3的所有文章。有一個限制性條款:會刪除只屬于類別3的所有文章。如果一個類別也同時屬于其它的類別,這個類別仍然不會被刪除。
標簽參數
顯示與某個標簽相關的文章
tag
為某個標簽提取文章
query_posts('tag=cooking');
獲得擁有任何這樣的標簽的文章
query_posts('tag=bread,baking');
獲取擁有這三個標簽的文章
query_posts('tag=bread+baking+recipe');
作者參數
你也可以根據作者限制文章數目
author_name=Harriet
author=3
author_name在 user_nicename區操作, 同時作者 在作者id上操作。
文章 &獨立頁面參數
返回一篇單獨的文章或者一個單獨的網頁
p=1 – 使用文章 ID來顯示第一篇文章
name=first-post – 使用 post Slug 顯示第一篇文章
page_id=7
pagename=about
showposts=1 (你可以使用 showposts=3,或者其它的任何數字顯示一定數目的文章)
由于 模板層級方面的原因, home.php先執行了。這意味這你可以編寫一個home.php,home.phh調用query_posts()重新得到一個特別的網頁并且將那個網頁設置為你的首頁。沒有任何插件或者hacks,你需要運行一個機制,并且顯示和維護一個非博客的首頁。
更有用的方法,可能是利用WP的網頁功能并且為你的首頁使用這個功能。你可以將”關于網頁”設置為entry point或者設置為站點的末頁。你可能執行一些更動態的步驟,設置一個自定義網頁,顯示最近的評論,文章,類別,存檔。請看看下面的例子。
時間參數
得到某個特別的時間段內發表的文章
hour=
minute=
second=
day= – 一個月中的每一天; 顯示,例如,十五號發表的所有文章。
monthnum=
year=
網頁參數
paged=2 -顯示使用”以前發表的文章”鏈接時,通常在網頁2上顯示的文章。
posts_per_page=10 -每個網頁顯示的文章數目;-1這個值,會顯示所有的文章。
order=ASC -按時間順序顯示文章,以相反的順序顯示DESC(默認)
Offset 參數
你不能轉移或者忽視一個或者更多的原始文章,這些文章一般是你的query同時使用offset參數收集到的。
下面的函數會顯示(1)最近的5篇文章
query_posts('showposts=5&offset=1');
根據參數排序
根據這個區給得到的文章排序
orderby=author
orderby=date
orderby=category
orderby=title
orderby=modified
orderby=modified
orderby=menu_order
orderby=parent
orderby=ID
orderby=rand(隨機)
同時考慮”ASC”(升)或者的”DESC”的排序參數
聯合參數
你可能從上面的例子中注意到,你使用一個&(&符號)將參數組合在一起,像:
query_posts('cat=3&year=2004');
類別13,關于當前月份顯示在主頁上的文章:
if (is_home())? {
query_posts ($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp'))); }
在2.3版本中,這個參數組合會返回屬于類別1同時屬于類別3的文章,只顯示兩篇(2)文章,根據標題,按降序排列:
query_posts(array('category__and'=>array(1,3),'showposts'=>2,'orderby'=>title,'order'=>DESC));
在2.3和2.5版本中,你可能期待下面的內容,返回屬于類別1并且標簽為”蘋果”的所有文章
query_posts('cat=1&tag=apples');
一個bug阻止這個運行。請看看Ticket #5433,一個工作區要搜索幾個使用+的標簽
query_posts('cat=1&tag=apples+apples');
對于先前的查詢,這個會產生期待的結果。注意使用’cat=1&tag=apples+oranges’能夠產生期待的結果。
通過上面的學習,我們就可以用query_post()來實現很多調用了,只需要用文章最開頭給出的那段代碼和后面的參數,你可以完美的調用自己想要的文章列表,例如屬于某幾個分類的含有某標簽的最新5篇文章并按發表時間降序排列、隨機調用10篇文章(如本站每篇文章都有隨機推薦文章)等等文章調用。當然你還可以發揮自己的想象,充分利用php的結構化程序特點,在不同的頁面調用不同的文章,如用is_paged()判斷是否為分頁面,然后如果分頁的話調用幾篇同類目下的文章等等。
好了,關于query_post()的介紹就到這里,希望對你有用。
總結
以上是生活随笔為你收集整理的?php query_posts(cat)?,query_posts()函数 (wordpress日志调用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aix卸载java,AIX系统学习之--
- 下一篇: 广汽埃安 AION V Plus 80