mirror of
git://develop.git.wordpress.org/
synced 2025-01-17 12:58:25 +01:00
Comments: Respect all post-related filters in WP_Comment_Query
.
The refactor of `WP_Comment_Query`'s SQL generation in [34542] introduced a bug that caused only the last post-related filter to be respected in comment queries. In other words, if querying for comments using params `post_status=draft&post_author=3`, only the last-processed of these params would be respected. The current changeset fixes the logic so that these clauses don't overwrite each other. Merges [36326] to the 4.4 branch. Props chriscct7. Fixes #35478. git-svn-id: https://develop.svn.wordpress.org/branches/4.4@36361 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
227cd229ed
commit
bd88063512
@ -758,7 +758,7 @@ class WP_Comment_Query {
|
||||
foreach ( $post_fields as $field_name => $field_value ) {
|
||||
// $field_value may be an array.
|
||||
$esses = array_fill( 0, count( (array) $field_value ), '%s' );
|
||||
$this->sql_clauses['where']['post_fields'] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
|
||||
$this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -534,6 +534,43 @@ class Tests_Comment_Query extends WP_UnitTestCase {
|
||||
$this->assertEqualSets( array( $c1, $c2 ), $found );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 35478
|
||||
*/
|
||||
public function test_multiple_post_fields_should_all_be_respected() {
|
||||
$posts = array();
|
||||
|
||||
$posts[] = self::factory()->post->create( array(
|
||||
'post_status' => 'publish',
|
||||
'post_author' => 3,
|
||||
) );
|
||||
|
||||
$posts[] = self::factory()->post->create( array(
|
||||
'post_status' => 'draft',
|
||||
'post_author' => 4,
|
||||
) );
|
||||
|
||||
$posts[] = self::factory()->post->create( array(
|
||||
'post_status' => 'draft',
|
||||
'post_author' => 3,
|
||||
) );
|
||||
|
||||
$comments = array();
|
||||
foreach ( $posts as $post ) {
|
||||
$comments[] = self::factory()->comment->create( array(
|
||||
'comment_post_ID' => $post,
|
||||
) );
|
||||
}
|
||||
|
||||
$q = new WP_Comment_Query( array(
|
||||
'post_status' => 'draft',
|
||||
'post_author' => 3,
|
||||
'fields' => 'ids',
|
||||
) );
|
||||
|
||||
$this->assertSame( array( $comments[2] ), $q->comments );
|
||||
}
|
||||
|
||||
function test_get_comments_for_post() {
|
||||
$limit = 5;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user