`WP_Comment_Query`: add `comment__in` to allowed values for `$orderby`.

Adds unit tests.

Fixes #33883.

Built from https://develop.svn.wordpress.org/trunk@34212


git-svn-id: http://core.svn.wordpress.org/trunk@34176 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2015-09-15 16:35:44 +00:00
parent 72651400ba
commit f5edeb11d0
2 changed files with 12 additions and 3 deletions

View File

@ -94,6 +94,7 @@ class WP_Comment_Query {
*
* @since 4.2.0
* @since 4.4.0 `$parent__in` and `$parent__not_in` were added.
* @since 4.4.0 Order by `comment__in` was added.
* @access public
*
* @param string|array $query {
@ -130,7 +131,7 @@ class WP_Comment_Query {
* 'comment_author_url', 'comment_content', 'comment_date',
* 'comment_date_gmt', 'comment_ID', 'comment_karma',
* 'comment_parent', 'comment_post_ID', 'comment_type', 'user_id',
* 'meta_value', 'meta_value_num', the value of $meta_key, and the
* 'comment__in', 'meta_value', 'meta_value_num', the value of $meta_key, and the
* array keys of `$meta_query`. Also accepts false, an empty array,
* or 'none' to disable `ORDER BY` clause.
* Default: 'comment_date_gmt'.
@ -390,7 +391,7 @@ class WP_Comment_Query {
$_order = $_value;
}
if ( ! $found_orderby_comment_ID && 'comment_ID' === $_orderby ) {
if ( ! $found_orderby_comment_ID && in_array( $_orderby, array( 'comment_ID', 'comment__in' ) ) ) {
$found_orderby_comment_ID = true;
}
@ -400,6 +401,11 @@ class WP_Comment_Query {
continue;
}
if ( 'comment__in' === $_orderby ) {
$orderby_array[] = $parsed;
continue;
}
$orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
}
@ -772,6 +778,9 @@ class WP_Comment_Query {
$parsed = "$wpdb->commentmeta.meta_value";
} elseif ( $orderby == 'meta_value_num' ) {
$parsed = "$wpdb->commentmeta.meta_value+0";
} elseif ( $orderby == 'comment__in' ) {
$comment__in = implode( ',', array_map( 'absint', $this->query_vars['comment__in'] ) );
$parsed = "FIELD( {$wpdb->comments}.comment_ID, $comment__in )";
} elseif ( in_array( $orderby, $allowed_keys ) ) {
if ( isset( $meta_query_clauses[ $orderby ] ) ) {

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.4-alpha-34205';
$wp_version = '4.4-alpha-34212';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.