注:本文適合有WordPress主題制作基礎(chǔ)或?qū)@方面感興趣,并且喜歡動手的讀者閱讀!
最近經(jīng)常有網(wǎng)友跟我咨詢WordPress函數(shù)query_posts的相關(guān)用法,說起來query_posts實(shí)在是太強(qiáng)大,參數(shù)無數(shù),用法更是無數(shù),如果讓我說它的用法,我根本沒法一一說清楚。開始之前,你可以先看看query_posts的官方文檔。不過看文檔對很多人來說可能會很困難,本文將介紹幾種常見的用法,不過一切用法都是從官方文檔中來的,學(xué)會看文檔才是王道。
query_posts函數(shù)在WordPress主題中是用于控制哪些文章可以出現(xiàn)在主循環(huán)中,可能說主循環(huán)很多人都不懂,那么舉個例子,首頁、存檔頁的這些文章(包括分頁中的)都是在主循環(huán)中的。在不使用query_posts函數(shù)控制的情況,首頁、存檔頁等都是按照文章的發(fā)布時間列出你博客上所有已發(fā)布的文章,而如果你想定義哪些文章可以顯示,哪些文章不顯示,文章按照什么樣的方法排序等,那么你就要用到query_posts函數(shù)了,本站首頁的文章排序:隨機(jī)閱讀、評論最多和標(biāo)題排序就是用query_posts函數(shù)來實(shí)現(xiàn)的。
首先介紹一下如何使用query_posts函數(shù)。在主題目錄下找到存檔頁面文件,存檔頁面包括index.php、archive.php等,一般分類頁、標(biāo)簽頁、日期頁和作者頁等都是用archive.php,具體的WordPress主題文件構(gòu)成可以看這篇文章:WordPress主題文件構(gòu)成
確定了你要控制哪個頁面的文章列表,那么我們就可以開始了,比如你想讓首頁的文章按評論數(shù)排序,那么index.php中的代碼基本框架就是這樣的:
其實(shí)你要做的就是在index.php中查找if (have_posts())或while (have_posts()),在前面添加query_posts函數(shù)即可。不過以上方式可能會導(dǎo)致首頁無法分頁,那你可以將query_posts函數(shù)改成這樣的行式:
下面是一些常見的query_posts函數(shù)用法,你可以直接用到你的主題中。
如果你想只顯示添加了某個自定義字段的文章,并按照這個字段的值來對文章排序,那么你可以參加這篇文章:WordPress手動修改文章排列順序
其實(shí)這種方式你可以看成怎樣只顯示我推薦的文章,那么含有這個自定義字段的文章就是推薦文章。
如果你不想讓某分類的文章出現(xiàn)在主循環(huán)中,那么你可以使用query_posts添加參數(shù)category__not_in即可:
如果只想讓顯示某個分類的文章,可以將category__not_in改成category__in。同理,如果不顯示某標(biāo)簽下的文章,可以將category__not_in改成:tag__not_in,或者只想讓顯示某個標(biāo)簽下的文章,可以將category__not_in改成tag__in,后面跟著標(biāo)簽的ID即可。
根據(jù)orderby的值不同,可以讓文章按照很多種方式進(jìn)行排序,下面是列舉幾個常見的值及其對應(yīng)的排序方式:title:按標(biāo)題;date:按發(fā)布日期;modified:按修改時間;ID:按文章ID;rand:隨機(jī)排序;comment_count:按評論數(shù)
如我只想顯示ID為2,4,6的文章,可以使用以下代碼:
如果不想顯示2,4,6這幾篇文章,可以將 post__in 改成 post__not_in 。另外如果只想顯示置頂文章,那么可以將array(2,4,6)改成get_option('sticky_posts'),這段代碼會自動給你填充所有置頂文章的ID。
如果你不想讓置頂文章顯示在頂部,而是讓它們安裝正常的順序排列,那么可以使用以下代碼:
WordPress的文章狀態(tài)有很多種,包括已發(fā)布、草稿、已刪除、私人的、定時發(fā)布的等等,如果你想將這些文章都統(tǒng)統(tǒng)顯示出來,那么可以這樣:
post_status參數(shù)可以控制具體的文章狀態(tài),值包括pending(待審)、publish(已發(fā)布)、draft(草稿), future(定時), private(私有), trash(已刪除)。
如果你想控制要顯示的文章數(shù)量,可以使用showposts參數(shù):
如果你只是想控制首頁、分類頁等每各分頁顯示的文章數(shù)量,可以在WordPress管理后臺 – 設(shè)置 – 閱讀那里設(shè)置博客頁面至多顯示多少篇文章。
原文:http://www.ludou.org/wordpress_query_posts.html