折騰 WordPress 的朋友一定都知道 WordPress 的文章列表頁的文章排序預設都是按照文章釋出日期從新到舊來排列,而對於某些自定義要求很高的網站是不夠的,那麼我們可以透過 query_posts 這個函式來控制 WordPress 的文章排序。首先我們要了解你需要修改哪個頁面的文章排序,比如說你需要控制首頁的文章排序,那麼就找到 index.php,如果需要修改標籤頁就找到 tag.php,如果需要修改分類頁面就找到 category.php,而修改歸檔頁面則是找到 archive.php 。確認了你所需修改的頁面後,我們就可以開始做修改了,比如說你想讓首頁的文章按評論數量來排序,那麼你就應該這樣修改,開啟 index.php 找到類似於 if (have_posts()) 這類的 WordPress 主迴圈,將其修改成一下程式碼:

<?php
// query_posts 函式
query_posts('orderby=comment_count'); //以評論最多到最少的排序方式
//主迴圈
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>

查詢

<?php endwhile; ?>

修改成

<?php endwhile; else: ?>

然後查詢

<?php endif; ?>

修改成

<?php
endif;
// 重置 query
wp_reset_query()
?>

此時首頁的文章就已經是按照文章的評論數量來排序的了,但是此時可能會導致首頁無法分頁,那你可以將 query_posts 函式改成這樣的:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;//控制分頁
$args = array(
// 這裡以下面的方式新增 query_posts 引數,具體引數可以參加官方檔案
'orderby' => comment_count,
'paged' => $paged
);
query_posts($args);
//主迴圈
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>

至此 WordPress 就可以完美的按照評論的多少來進行排序了,如果需要其他排序方法可以參考官方檔案進行修改。