欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

WordPress函數(shù) 之 query_posts用法匯總

老白7年前1616瀏覽0評論

最近經(jīng)常有網(wǎng)友跟我咨詢WordPress函數(shù)query_posts的相關用法,說起來query_posts實在是太強大,參數(shù)無數(shù),用法更是無數(shù),如果讓我說它的用法,我根本沒法一一說清楚。開始之前,你可以先看看query_posts的官方文檔,query_posts的全部參數(shù)可以參考:WP_Query。不過看文檔對很多人來說可能會很困難,本文將介紹幾種常見的用法,不過一切用法都是從官方文檔中來的,學會看文檔才是王道。

query_posts函數(shù)在WordPress主題中是用于控制哪些文章可以出現(xiàn)在主循環(huán)中,可能說主循環(huán)很多人都不懂,那么舉個例子,首頁、存檔頁的這些文章(包括分頁中的)都是在主循環(huán)中的。在不使用query_posts函數(shù)控制的情況,首頁、存檔頁等都是按照文章的發(fā)布時間列出你博客上所有已發(fā)布的文章,而如果你想定義哪些文章可以顯示,哪些文章不顯示,文章按照什么樣的方法排序等,那么你就要用到query_posts函數(shù)了,本站首頁的文章排序:隨機閱讀、評論最多和標題排序就是用query_posts函數(shù)來實現(xiàn)的。

基本用法:

首先介紹一下如何使用query_posts函數(shù)。在主題目錄下找到存檔頁面文件,存檔頁面包括index.php、archive.php等,一般分類頁、標簽頁、日期頁和作者頁等都是用archive.php,具體的WordPress主題文件構成可以看這篇文章:WordPress主題文件構成

確定了你要控制哪個頁面的文章列表,那么我們就可以開始了,比如你想讓首頁的文章按評論數(shù)排序,那么index.php中的代碼基本框架就是這樣的:

<?php// query_posts函數(shù)query_posts('orderby=comment_count');// 主循環(huán)if ( have_posts() ) : while ( have_posts() ) : the_post();
 ..endwhile; else:
 ..endif;// 重置querywp_reset_query();?>

其實你要做的就是在index.php中查找if (have_posts())while (have_posts()),在前面添加query_posts函數(shù)即可。不過以上方式可能會導致首頁無法分頁,那你可以將query_posts函數(shù)改成這樣的行式:

$args = array(
    // query_posts參數(shù),具體參數(shù)可以參加官方文檔
    'orderby'   => comment_count);// 下面這一行代碼是必須的,不然不能分頁$arms = array_merge($args, $wp_query->query);query_posts($arms);

下面是一些常見的query_posts函數(shù)用法,你可以直接用到你的主題中。

一、只顯示含有某個自定義字段的文章

如果你想只顯示添加了某個自定義字段的文章,并按照這個字段的值來對文章排序,那么你可以參加這篇文章:WordPress手動修改文章排列順序

其實這種方式你可以看成怎樣只顯示我推薦的文章,那么含有這個自定義字段的文章就是推薦文章。




二、怎樣讓某分類的文章不顯示/顯示

如果你不想讓某分類的文章出現(xiàn)在主循環(huán)中,那么你可以使用query_posts添加參數(shù)category__not_in即可:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args = array(
    // 2, 6就是你不想顯示的分類ID,多個用半角逗號隔開
    'category__not_in'   => array(2, 6),
    'paged' => $paged);query_posts($args);

如果只想讓顯示某個分類的文章,可以將category__not_in改成category__in。同理,如果不顯示某標簽下的文章,可以將category__not_in改成:tag__not_in,或者只想讓顯示某個標簽下的文章,可以將category__not_in改成tag__in,后面跟著標簽的ID即可。

三、如何對文章進行排序

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args = array(
    // 以下代碼中的title就是orderby的值,按標題排序
    'orderby'   => title,
    'paged' => $paged);query_posts($args);

根據(jù)orderby的值不同,可以讓文章按照很多種方式進行排序,下面是列舉幾個常見的值及其對應的排序方式:title:按標題;date:按發(fā)布日期;modified:按修改時間;ID:按文章ID;rand:隨機排序;comment_count:按評論數(shù)

四、只顯示相應ID的文章

如我只想顯示ID為2,4,6的文章,可以使用以下代碼:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args = array(
    // 以下代碼中的2,4,6就是文章的ID
    'post__in'   => array(2,4,6),
    'paged' => $paged);query_posts($args);

如果不想顯示2,4,6這幾篇文章,可以將 post__in 改成 post__not_in 。另外如果只想顯示置頂文章,那么可以將array(2,4,6)改成get_option('sticky_posts'),這段代碼會自動給你填充所有置頂文章的ID。

五、讓置頂文章不置頂

如果你不想讓置頂文章顯示在頂部,而是讓它們安裝正常的順序排列,那么可以使用以下代碼:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args=array(
    'paged' => $paged,
    'ignore_sticky_posts' => 1);query_posts($args);

六、列出所有狀態(tài)的文章

WordPress的文章狀態(tài)有很多種,包括已發(fā)布、草稿、已刪除、私人的、定時發(fā)布的等等,如果你想將這些文章都統(tǒng)統(tǒng)顯示出來,那么可以這樣:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args = array(
    'post_status' => array('publish', 'pending', 'draft', 'future', 'private', 'trash'),
    'paged' => $paged);query_posts($args);

post_status參數(shù)可以控制具體的文章狀態(tài),值包括pending(待審)、publish(已發(fā)布)、draft(草稿), future(定時), private(私有), trash(已刪除)。

七、控制文章的數(shù)量

如果你想控制要顯示的文章數(shù)量,可以使用showposts參數(shù):

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;$args = array(
    // 控制只顯示10篇文章,如果將10改成-1將顯示所有文章
    'posts_per_page' => 10,
    'paged' => $paged);query_posts($args);

如果你只是想控制首頁、分類頁等每各分頁顯示的文章數(shù)量,可以在WordPress管理后臺 - 設置 - 閱讀那里設置博客頁面至多顯示多少篇文章。

原文出處:露兜博客 https://www.ludou.org/wordpress_query_posts.html