Get Comment With Meta value

时间:2015-12-20 作者:Varun Sridharan

我需要得到一个帖子的所有评论,包括元价值。。例如,我需要所有注释字段+一个元值。

我尝试了以下代码,但是。。它不起作用

$args = array( 
  \'status\' => \'approve\', 
  \'type\' => \'comment\', 
  \'post_id\' => \'99\', 
  \'post_type\' => \'product\', 
  //\'count\' => true, 
  \'meta_query\' => array( 
    array( 
      \'key\' => \'comment_rating_avg_key\', 
      \'compare\' => \'EXISTS\', 
    ), 
  ), 
); 
$comments_query = new WP_Comment_Query; 
$comments = $comments_query->query( $args ); 
var_dump($comments);
我是否需要编写自定义查询来获取它?或者可以使用默认WP函数完成?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

WP_Comment_Query 不提取评论元。您可以按注释元进行搜索,但查询不会返回该数据。你可以通过查看抄本轻松地检查这一点。

您需要循环查看结果并运行get_comment_meta(), 或者基本上通过the_comments.

还可以向返回的数据添加filtering the "fields" clauses:

function add_cmeta_wpse_212423($clauses){
  //   var_dump($clauses);
  global $wpdb;
  $meta = "(SELECT meta_value
  FROM {$wpdb->commentmeta} 
  WHERE (
    comment_id = comment_ID
    AND meta_key = \'test_comment_meta\')
  ) as test_comment_meta";
  $clauses[\'fields\'] .=  \', \'.$meta;
  return $clauses;
}
add_filter(\'comments_clauses\',\'add_cmeta_wpse_212423\');
我创建了一个子查询。您可以创建JOIN