Make WordPress Core


Ignore:
Timestamp:
09/15/2015 04:34:14 PM (9 years ago)
Author:
wonderboymusic
Message:

WP_Comment_Query: add comment__in to allowed values for $orderby.

Adds unit tests.

Fixes #33883.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-comment-query.php

    r34205 r34212  
    9595     * @since 4.2.0
    9696     * @since 4.4.0 `$parent__in` and `$parent__not_in` were added.
     97     * @since 4.4.0 Order by `comment__in` was added.
    9798     * @access public
    9899     *
     
    131132     *                                             'comment_date_gmt', 'comment_ID', 'comment_karma',
    132133     *                                             'comment_parent', 'comment_post_ID', 'comment_type', 'user_id',
    133      *                                             'meta_value', 'meta_value_num', the value of $meta_key, and the
     134     *                                             'comment__in', 'meta_value', 'meta_value_num', the value of $meta_key, and the
    134135     *                                             array keys of `$meta_query`. Also accepts false, an empty array,
    135136     *                                             or 'none' to disable `ORDER BY` clause.
     
    391392                }
    392393
    393                 if ( ! $found_orderby_comment_ID && 'comment_ID' === $_orderby ) {
     394                if ( ! $found_orderby_comment_ID && in_array( $_orderby, array( 'comment_ID', 'comment__in' ) ) ) {
    394395                    $found_orderby_comment_ID = true;
    395396                }
     
    398399
    399400                if ( ! $parsed ) {
     401                    continue;
     402                }
     403
     404                if ( 'comment__in' === $_orderby ) {
     405                    $orderby_array[] = $parsed;
    400406                    continue;
    401407                }
     
    773779        } elseif ( $orderby == 'meta_value_num' ) {
    774780            $parsed = "$wpdb->commentmeta.meta_value+0";
     781        } elseif ( $orderby == 'comment__in' ) {
     782            $comment__in = implode( ',', array_map( 'absint', $this->query_vars['comment__in'] ) );
     783            $parsed = "FIELD( {$wpdb->comments}.comment_ID, $comment__in )";
    775784        } elseif ( in_array( $orderby, $allowed_keys ) ) {
    776785
Note: See TracChangeset for help on using the changeset viewer.