我之前的「WordPress 文章查询教程6:如何使用排序相关的参数」中详细介绍了文章查询的排序参数,其中介绍可以通过评论数进行排序:$query = new WP_Query( array(
'orderby' => 'comment_count'
) );但是需求总是不停的变化,现在又有了新需求,获取最新被评论的文章列表,意思就是某篇文章刚被评论,它就排到最前面,在某些社交需求的网站可能需要用到。因为WP_QueryClass 排序参数没有comment_date选项,所以不能直接使用它,那么这样两个表连表查询一般来说只能通过 SQL 来实现了。但是使用 SQL 来实现可能就会造成 API 不一致的问题,无法直接使用WP_Query进行各种操作,所以最好是通过posts_clauses接口实现让WP_Query排序参数支持comment_date:add_filter('posts_clauses', function ($clauses, $wp_query){
global $wpdb;
$orderby = $wp_query->get('orderby');
$order = $wp_query->get('order') ?: 'DESC';
if($orderby == 'comment_date'){
$clauses['fie
...
继续阅读
(79)