Fix 'count' in `WP_Comment_Query` when using 'meta_query'.

Props heshiming, desaiuditd.
Fixes #23369.

git-svn-id: https://develop.svn.wordpress.org/trunk@30026 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2014-10-26 16:45:37 +00:00
parent c429ba1bdd
commit 4482d000ba
2 changed files with 40 additions and 1 deletions

View File

@ -559,7 +559,10 @@ class WP_Comment_Query {
$clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
$join .= $clauses['join'];
$where .= $clauses['where'];
$groupby = "{$wpdb->comments}.comment_ID";
if ( ! $this->query_vars['count'] ) {
$groupby = "{$wpdb->comments}.comment_ID";
}
}
$date_query = $this->query_vars['date_query'];

View File

@ -613,4 +613,40 @@ class Tests_Comment_Query extends WP_UnitTestCase {
$this->assertNotContains( 'ORDER BY', $q->request );
}
public function test_count() {
$c1 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'user_id' => 7 ) );
$c2 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'user_id' => 7 ) );
$q = new WP_Comment_Query();
$found = $q->query( array(
'count' => true,
) );
$this->assertEquals( 2, $found );
}
/**
* @ticket 23369
*/
public function test_count_with_meta_query() {
$c1 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'user_id' => 7 ) );
$c2 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'user_id' => 7 ) );
$c3 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'user_id' => 7 ) );
add_comment_meta( $c1, 'foo', 'bar' );
add_comment_meta( $c3, 'foo', 'bar' );
$q = new WP_Comment_Query();
$found = $q->query( array(
'count' => true,
'meta_query' => array(
array(
'key' => 'foo',
'value' => 'bar',
),
),
) );
$this->assertEquals( 2, $found );
}
}