Return an empty array from `get_approved_comments()` when `$post_id` is empty.
This behavior was broken when moving the internals to `WP_Comment_Query` in [30098]. As a result, `get_approved_comments( 0 )` was fetching *all* approved comments, causing performance issues. Props dd32. Fixes #30412. git-svn-id: https://develop.svn.wordpress.org/trunk@30402 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
78f496f378
commit
10b611b0c3
|
@ -136,7 +136,11 @@ function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $
|
||||||
* @return int|array $comments The approved comments, or number of comments if `$count`
|
* @return int|array $comments The approved comments, or number of comments if `$count`
|
||||||
* argument is true.
|
* argument is true.
|
||||||
*/
|
*/
|
||||||
function get_approved_comments( $post_id = 0, $args = array() ) {
|
function get_approved_comments( $post_id, $args = array() ) {
|
||||||
|
if ( ! $post_id ) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
$defaults = array(
|
$defaults = array(
|
||||||
'status' => 1,
|
'status' => 1,
|
||||||
'post_id' => $post_id,
|
'post_id' => $post_id,
|
||||||
|
|
|
@ -30,4 +30,16 @@ class Tests_Comment extends WP_UnitTestCase {
|
||||||
// all comments types will be returned
|
// all comments types will be returned
|
||||||
$this->assertEquals( array( $ca1, $ca2, $c2, $c3, $c4, $c5 ), wp_list_pluck( $found, 'comment_ID' ) );
|
$this->assertEquals( array( $ca1, $ca2, $c2, $c3, $c4, $c5 ), wp_list_pluck( $found, 'comment_ID' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 30412
|
||||||
|
*/
|
||||||
|
public function test_get_approved_comments_with_post_id_0_should_return_empty_array() {
|
||||||
|
$p = $this->factory->post->create();
|
||||||
|
$ca1 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1' ) );
|
||||||
|
|
||||||
|
$found = get_approved_comments( 0 );
|
||||||
|
|
||||||
|
$this->assertSame( array(), $found );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,18 @@ class Tests_Comment_Query extends WP_UnitTestCase {
|
||||||
$this->assertEqualSets( array( $c1, $c2, $c3, $c4, $c5 ), $found );
|
$this->assertEqualSets( array( $c1, $c2, $c3, $c4, $c5 ), $found );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_query_post_id_0() {
|
||||||
|
$c1 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id, 'comment_approved' => '1' ) );
|
||||||
|
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$found = $q->query( array(
|
||||||
|
'post_id' => 0,
|
||||||
|
'fields' => 'ids',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertEqualSets( array( $c1 ), $found );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ticket 12668
|
* @ticket 12668
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue