WordPress.org

Make WordPress Core

Ticket #37151: 37151.diff

File 37151.diff, 2.0 KB (added by boonebgorges, 4 years ago)
  • src/wp-includes/class-wp-meta-query.php

    diff --git src/wp-includes/class-wp-meta-query.php src/wp-includes/class-wp-meta-query.php
    index affb83a..4019912 100644
    class WP_Meta_Query { 
    327327                        return false;
    328328                }
    329329
     330                $this->table_aliases = array();
     331
    330332                $this->meta_table     = $meta_table;
    331333                $this->meta_id_column = sanitize_key( $type . '_id' );
    332334
  • src/wp-includes/class-wp-term-query.php

    diff --git src/wp-includes/class-wp-term-query.php src/wp-includes/class-wp-term-query.php
    index 924a1e8..dd42166 100644
    class WP_Term_Query { 
    814814        protected function parse_orderby_meta( $orderby_raw ) {
    815815                $orderby = '';
    816816
     817                // Tell the meta query to generate its SQL, so we have access to table aliases.
     818                $this->meta_query->get_sql( 'term', 't', 'term_id' );
    817819                $meta_clauses = $this->meta_query->get_clauses();
    818820                if ( ! $meta_clauses || ! $orderby_raw ) {
    819821                        return $orderby;
  • tests/phpunit/tests/term/query.php

    diff --git tests/phpunit/tests/term/query.php tests/phpunit/tests/term/query.php
    index d1f875b..37dbe48 100644
    class Tests_Term_Query extends WP_UnitTestCase { 
    6161
    6262                $this->assertEqualSets( array( $terms[0], $terms[2] ), $q->terms );
    6363        }
     64
     65        /**
     66         * @ticket 37151
     67         */
     68        public function test_order_by_meta_value_num() {
     69                register_taxonomy( 'wptests_tax', 'post' );
     70
     71                $terms = self::factory()->term->create_many( 3, array( 'taxonomy' => 'wptests_tax' ) );
     72
     73                add_term_meta( $terms[0], 'foo', 10 );
     74                add_term_meta( $terms[1], 'foo', 1 );
     75                add_term_meta( $terms[2], 'foo', 100 );
     76
     77                $q = new WP_Term_Query( array(
     78                        'taxonomy' => array( 'wptests_tax' ),
     79                        'fields' => 'ids',
     80                        'hide_empty' => false,
     81                        'meta_key' => 'foo',
     82                        'orderby' => 'meta_value_num',
     83                ) );
     84
     85                $found = array_map( 'intval', $q->terms );
     86                $this->assertSame( array( $terms[1], $terms[0], $terms[2] ), $found );
     87        }
    6488}