折腾 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 就可以完美的按照评论的多少来进行排序了,如果需要其他排序方法可以参考官方文档进行修改。