Use `WP_Comment_Query` to query comments in `get_approved_comments()`.

Props dancameron.
See #12668.

git-svn-id: https://develop.svn.wordpress.org/trunk@30098 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2014-10-29 21:57:07 +00:00
parent 192e1aac62
commit f9e32aef2d
3 changed files with 30 additions and 7 deletions

View File

@ -128,14 +128,21 @@ function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $
* Retrieve the approved comments for post $post_id.
*
* @since 2.0.0
* @uses $wpdb
*
* @param int $post_id The ID of the post
* @return array $comments The approved comments
* @param int $post_id The ID of the post.
* @param array $args Optional. WP_Comment_Query args.
* @return array $comments The approved comments.
*/
function get_approved_comments($post_id) {
global $wpdb;
return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' ORDER BY comment_date", $post_id));
function get_approved_comments( $post_id = 0, $args = array() ) {
$defaults = array(
'status' => 1,
'post_id' => $post_id,
'order' => 'ASC',
);
$r = wp_parse_args( $args, $defaults );
$query = new WP_Comment_Query;
return $query->query( $r );
}
/**

View File

@ -14,4 +14,20 @@ class Tests_Comment extends WP_UnitTestCase {
$result = wp_update_comment( array( 'comment_ID' => $comments[0], 'comment_parent' => $comments[1] ) );
$this->assertEquals( 0, $result );
}
public function test_get_approved_comments() {
$p = $this->factory->post->create();
$ca1 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1' ) );
$ca2 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1' ) );
$ca3 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '0' ) );
$c2 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1', 'comment_type' => 'pingback' ) );
$c3 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1', 'comment_type' => 'trackback' ) );
$c4 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1', 'comment_type' => 'mario' ) );
$c5 = $this->factory->comment->create( array( 'comment_post_ID' => $p, 'comment_approved' => '1', 'comment_type' => 'luigi' ) );
$found = get_approved_comments( $p );
// all comments types will be returned
$this->assertEquals( array( $ca1, $ca2, $c2, $c3, $c4, $c5 ), wp_list_pluck( $found, 'comment_ID' ) );
}
}

View File

@ -961,7 +961,7 @@ class Tests_Comment_Query extends WP_UnitTestCase {
'fields' => 'ids',
) );
$this->assertEquals( array( $c1, $c2, $c3, $c4, $c5 ), $found );
$this->assertEqualSets( array( $c1, $c2, $c3, $c4, $c5 ), $found );
}
public function test_orderby_default() {