Make WordPress Core

Changeset 31369


Ignore:
Timestamp:
02/08/2015 04:58:14 PM (12 years ago)
Author:
boonebgorges
Message:

Add orderby=meta_value_num support to WP_User_Query.

Props tyxla, genkisan.
Fixes #27887.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/user.php

    r31269 r31369  
    501501         *
    502502         * @since 3.1.0
     503         * @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter.
    503504         * @access public
    504505         *
     
    522523         *                                         'nicename', 'email', 'url'. Default empty array.
    523524         *     @type string       $orderby         Field to sort the retrieved users by. Accepts 'ID', 'display_name',
    524          *                                         'login', 'nicename', 'email', 'url', 'registered', 'post_count', or
    525          *                                         'meta_value'. To use 'meta_value', `$meta_key` must be also be defined.
     525         *                                         'login', 'nicename', 'email', 'url', 'registered', 'post_count',
     526         *                                         'meta_value' or 'meta_value_num'. To use 'meta_value' or
     527         *                                         'meta_value_num', `$meta_key` must be also be defined.
    526528         *                                         Default 'user_login'.
    527529         *     @type string       $order           Designates ascending or descending order of users. Accepts 'ASC',
     
    632634                        } elseif ( 'meta_value' == $qv['orderby'] ) {
    633635                                $orderby = "$wpdb->usermeta.meta_value";
     636                        } elseif ( 'meta_value_num' == $qv['orderby'] ) {
     637                                $orderby = "$wpdb->usermeta.meta_value+0";
    634638                        } elseif ( 'include' === $qv['orderby'] && ! empty( $include ) ) {
    635639                                // Sanitized earlier.
  • trunk/tests/phpunit/tests/user/query.php

    r30094 r31369  
    131131
    132132                $expected = array( $users[1], $users[0], $users[2] );
     133
     134                $this->assertEquals( $expected, $q->get_results() );
     135        }
     136
     137        /**
     138         * @ticket 27887
     139         */
     140        public function test_orderby_meta_value_num() {
     141                $users = $this->factory->user->create_many( 3, array(
     142                        'role' => 'author'
     143                ) );
     144
     145                update_user_meta( $users[0], 'user_age', '101' );
     146                update_user_meta( $users[1], 'user_age', '20' );
     147                update_user_meta( $users[2], 'user_age', '25' );
     148
     149                $q = new WP_User_Query( array(
     150                        'include' => $users,
     151                        'meta_key' => 'user_age',
     152                        'orderby' => 'meta_value_num',
     153                        'fields' => 'ids'
     154                ) );
     155
     156                $expected = array( $users[1], $users[2], $users[0] );
    133157
    134158                $this->assertEquals( $expected, $q->get_results() );
Note: See TracChangeset for help on using the changeset viewer.