Make WordPress Core

Ticket #31220: 31220.patch

File 31220.patch, 1.5 KB (added by tyxla, 11 years ago)

Adding meta_value_num orderby option for WP_User_Query. Including a test for that case.

  • src/wp-includes/user.php

     
    631631                                $orderby = 'ID';
    632632                        } elseif ( 'meta_value' == $qv['orderby'] ) {
    633633                                $orderby = "$wpdb->usermeta.meta_value";
     634                        } elseif ( 'meta_value_num' == $qv['orderby'] ) {
     635                                $orderby = "$wpdb->usermeta.meta_value+0";
    634636                        } elseif ( 'include' === $qv['orderby'] && ! empty( $include ) ) {
    635637                                // Sanitized earlier.
    636638                                $include_sql = implode( ',', $include );
  • tests/phpunit/tests/user/query.php

     
    186186        }
    187187
    188188        /**
     189         * @ticket 31220
     190         */
     191        public function test_orderby_meta_value_num() {
     192                $users = $this->factory->user->create_many( 3, array(
     193                        'role' => 'author'
     194                ) );
     195
     196                update_user_meta( $users[0], 'user_age', '101' );
     197                update_user_meta( $users[1], 'user_age', '20' );
     198                update_user_meta( $users[2], 'user_age', '25' );
     199
     200                $q = new WP_User_Query( array(
     201                        'include' => $users,
     202                        'meta_key' => 'user_age',
     203                        'orderby' => 'meta_value_num',
     204                        'fields' => 'ids'
     205                ) );
     206
     207                $expected = array( $users[1], $users[2], $users[0] );
     208
     209                $this->assertEquals( $expected, $q->get_results() );
     210        }
     211
     212        /**
    189213         * @ticket 21119
    190214         */
    191215        function test_prepare_query() {