php - 按用户角色过滤 WordPress 评论

标签 php mysql sql wordpress

尝试按特定用户角色过滤我的所有评论。在本例中,用户角色称为 group1。仅当我删除 WHERE m.meta_key = 'wp_capability' AND m.meta_value = 'group1' 时,才会返回所有评论 来自下面的查询。

$query = $wpdb->prepare( "
SELECT *
  FROM $wpdb->comments c
  LEFT 
  JOIN $wpdb->commentmeta cm 
    ON c.comment_ID = cm.comment_id
  LEFT 
  JOIN $wpdb->users u 
    ON c.user_id = u.ID
  LEFT 
  JOIN $wpdb->usermeta m 
    ON m.user_id = u.ID
 WHERE c.comment_post_ID = %s
   AND c.comment_approved = 1
 WHERE m.meta_key = 'wp_capabilities'
   AND m.meta_value = 'group1'
 ORDER 
    BY c.comment_ID $comment_order
                    ",
                    $post->ID);

最佳答案

您有两个 WHERE 子句,但即使修复了语法错误,它也会作为 inner join 作为 where 子句中外部表的过滤条件将外连接转变为内连接。

LEFT JOINON 子句本身中添加外部表的过滤器:

select *
from $wpdb - > comments c
left join $wpdb - > commentmeta cm on c.comment_ID = cm.comment_id
left join $wpdb - > users u on c.user_id = u.ID
left join $wpdb - > usermeta m on m.user_id = u.ID
    and m.meta_key = 'wp_capabilities'
    and m.meta_value = 'group1'
where c.comment_post_ID = % s
    and c.comment_approved = 1
order by c.comment_ID $comment_order

关于php - 按用户角色过滤 WordPress 评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015326/

相关文章:

php - 为什么这个递归 in_array 函数错误地返回 true?

php - 按键的值过滤一个数组,为每个键的值将其重组为一个子数组

php - 检查大型 CSV 文件(1m 行)是否与 MySQL 表具有相同的数据

php - 在表中存储用户的统计信息。我应该使用这两种方法中的哪一种?

mysql - 选择进入不工作

sql - 查找不在该月第一天或最后一天的日期

python - 在 SQLAlchemy 中,为什么在映射到任意选择时必须为 select 构造别名?

php - 如何使用 limit 子句对记录进行排序

php - mysql_fetch 无法收集数据库中的所有数据

MySQL 连接表