Make WordPress Core

Ticket #12668: 12668-get_approved_comments-WP_COMMENT_QUERY.patch

File 12668-get_approved_comments-WP_COMMENT_QUERY.patch, 3.4 KB (added by dancameron, 10 years ago)

Use WP_Comment_Query to improve get_approved_comments since we like caching and all that.

  • src/wp-admin/includes/class-wp-comments-list-table.php

     
    5858                if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) )
    5959                        $comment_status = 'all';
    6060
    61                 $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : '';
     61                $comment_type = ! empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : array( 'pingback', 'trackback', 'comment' );
    6262
    6363                $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : '';
    6464
     
    108108                        'type' => $comment_type,
    109109                        'orderby' => $orderby,
    110110                        'order' => $order,
    111                         'post_type' => $post_type,
     111                        'post_type' => $post_type
    112112                );
    113113
    114114                $_comments = get_comments( $args );
  • src/wp-admin/includes/dashboard.php

     
    752752
    753753        $comments_query = array(
    754754                'number' => $total_items * 5,
    755                 'offset' => 0
     755                'offset' => 0,
     756                'type'   => array( 'pingback', 'trackback', 'comment' )
    756757        );
    757758        if ( ! current_user_can( 'edit_posts' ) )
    758759                $comments_query['status'] = 'approve';
  • src/wp-includes/comment.php

     
    131131 * @uses $wpdb
    132132 *
    133133 * @param int $post_id The ID of the post
     134 * @param array $args WP_Comment_Query args
    134135 * @return array $comments The approved comments
    135136 */
    136 function get_approved_comments($post_id) {
    137         global $wpdb;
    138         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));
     137function get_approved_comments( $post_id = 0, $args = array() ) {
     138        $defaults = array(
     139                'status' => 1,
     140                'post_id' => $post_id
     141        );
     142        $r = wp_parse_args( $args, $defaults );
     143
     144        $query = new WP_Comment_Query;
     145        return $query->query( $r );
    139146}
    140147
    141148/**
     
    447454                } elseif( 'pings' == $this->query_vars['type'] ) {
    448455                        $where .= ' AND comment_type IN ("pingback", "trackback")';
    449456                } elseif ( ! empty( $this->query_vars['type'] ) ) {
    450                         $where .= $wpdb->prepare( ' AND comment_type = %s', $this->query_vars['type'] );
     457                        if ( is_array( $this->query_vars['type'] ) ) {
     458                                $where .= ' AND comment_type IN (' . implode( ',', $this->query_vars['type'] ) . ')';
     459                        } elseif ( '' !== $this->query_vars['type'] ) {
     460                                $where .= $wpdb->prepare( ' AND comment_type = %d', $this->query_vars['type'] );
     461                        }
    451462                }
    452463
    453464                if ( '' !== $this->query_vars['parent'] ) {
  • src/wp-includes/default-widgets.php

     
    856856                $comments = get_comments( apply_filters( 'widget_comments_args', array(
    857857                        'number'      => $number,
    858858                        'status'      => 'approve',
    859                         'post_status' => 'publish'
     859                        'post_status' => 'publish',
     860                        'type'        => array( 'pingback', 'trackback', 'comment' )
    860861                ) ) );
    861862
    862863                $output .= $args['before_widget'];