!
也想出现在这里? 联系我们
广告位

WordPress 中获取最新被评论的文章列表

我之前的 如何使用 WordPress 文章查询排序相关的参数 中详细介绍了文章查询的排序参数,其中介绍可以通过评论数进行排序:

  1. $query = new WP_Query( array(
  2. 'orderby' => 'comment_count'
  3. ) );

但是需求总是不停的变化,现在又有了新需求,获取最新被评论的文章列表,意思就是某篇文章刚被评论,它就排到最前面,在某些社交需求的网站可能需要用到。

因为 WP_Query Class 排序参数没有 comment_date 选项,所以不能直接使用它,那么这样两个表连表查询一般来说只能通过 SQL 来实现了。

但是使用 SQL 来实现可能就会造成 API 不一致的问题,无法直接使用 WP_Query 进行各种操作,所以最好是通过 posts_clauses 接口实现让 WP_Query 排序参数支持 comment_date:

  1. add_filter('posts_clauses', function ($clauses, $wp_query){
  2. global $wpdb;
  3. $orderby = $wp_query->get('orderby');
  4. $order = $wp_query->get('order') ?: 'DESC';
  5. if($orderby == 'comment_date'){
  6. $clauses['fields'] .= ', ct.comment_post_ID, MAX(ct.comment_ID) as cid';
  7. $clauses['join'] = "INNER JOIN {$wpdb->comments} AS ct ON {$wpdb->posts}.ID = ct.comment_post_ID AND ct.comment_parent=0 AND ct.comment_approved NOT IN ('spam', 'trash', 'post-trashed')";
  8. $clauses['groupby'] = "ct.comment_post_ID";
  9. $clauses['orderby'] = "cid {$order}";
  10. }
  11. return $clauses;
  12. }, 10, 2);

上面的代码简单解释一下,就是通过 posts_clauses 接口实现文章表和评论表连表,然后通过评论时间进行排序获取最新被评论的文章列表。

当然你也可以不需要了解和使用上面的代码,因为 WPJAM Basic 已经整合,你只需要知道最后可以通过下面简单的方式就能够获取最新被评论的文章列表:

  1. $query = new WP_Query( array(
  2. 'orderby' => 'comment_date'
  3. ) );

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 增加特色图像上传尺寸提示的代码

2023-4-20 15:32:39

WordPress教程

WordPress 如何检测对方网站是否有本站的反链、友情链接

2023-5-30 15:32:46

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索