程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP入門知識 >> WordPress教程:query_posts()

WordPress教程:query_posts()

編輯:PHP入門知識

將query_posts()放在LOOP之前限定你所需要的條件,wp_query會產生一個新的使用你的參數的SQL查詢,而忽視通過URL接收到的其它的參數,如果想不忽略,可以在調用中使用$query_string。

query_posts($query_string . "&order=ASC")

設置文章顯示的順序,但是不干擾其余的查詢字符串,參數前須有“&”符號

其他還有N多用途~~

  • 主頁不顯示某一分類下的日志
<?php
   if (is_home()) {
      query_posts("cat=-3");
   }
?>
  • 獲得特定的日志
<?php
query_posts('p=5');
?>
  • 獲得特定的頁面
<?php
query_posts('page_id=7');      //只返回網頁7
?>
<?php
query_posts('pagename=about'); //只返回關於網頁
?>
<?php
query_posts('pagename=parent/child'); // 返回母網頁的子網頁
?>
  • 創建所有文章列表,並且提供分頁功能
<?php
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’能夠產生期待的結果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved