WordPress.org

Make WordPress Core

Ticket #29424: 29424.3.diff

File 29424.3.diff, 7.7 KB (added by birgire, 8 months ago)

Adds missing orderby fields + tests

  • src/wp-includes/class-wp-query.php

    diff --git src/wp-includes/class-wp-query.php src/wp-includes/class-wp-query.php
    index afc8f96..29749b8 100644
    class WP_Query { 
    588588         *              Introduced `RAND(x)` syntax for `$orderby`, which allows an integer seed value to random sorts.
    589589         * @since 4.6.0 Added 'post_name__in' support for `$orderby`. Introduced the `$lazy_load_term_meta` argument.
    590590         * @since 4.9.0 Introduced the `$comment_count` parameter.
     591         * @since x.x.x Added the following support for `$orderby`: 'post_date_gmt', 'date_gmt', 'post_modified_gmt',
     592         *              'modified_gmt', 'post_status', 'comment_status', 'ping_status', 'post_mime_type', 'mime_type'.
    591593         *
    592594         * @param string|array $query {
    593595         *     Optional. Array or string of Query parameters.
    class WP_Query { 
    641643         *                                                 passed. To use 'meta_value', or 'meta_value_num',
    642644         *                                                 'meta_key=keyname' must be also be defined. To sort by a
    643645         *                                                 specific `$meta_query` clause, use that clause's array key.
    644          *                                                 Accepts 'none', 'name', 'author', 'date', 'title',
    645          *                                                 'modified', 'menu_order', 'parent', 'ID', 'rand',
    646          *                                                 'relevance', 'RAND(x)' (where 'x' is an integer seed value),
    647          *                                                 'comment_count', 'meta_value', 'meta_value_num', 'post__in',
    648          *                                                 'post_name__in', 'post_parent__in', and the array keys
    649          *                                                 of `$meta_query`. Default is 'date', except when a search
    650          *                                                 is being performed, when the default is 'relevance'.
    651          *
     646         *                                                 Accepts 'none', 'name', 'post_name', 'author', 'post_author',
     647         *                                                 'date', 'post_date', 'date_gmt', 'post_date_gmt', 'title',
     648         *                                                 'post_title', 'modified', 'post_modified', 'modified_gmt',
     649         *                                                 'post_modified_gmt', 'post_status', 'ping_status',
     650         *                                                 'comment_status', 'mime_type', 'post_mime_type', 'menu_order',
     651         *                                                 'parent', 'post_parent', 'ID', 'rand', 'relevance',
     652         *                                                 'RAND(x)' (where 'x' is an integer seed value), 'comment_count',
     653         *                                                 'meta_value', 'meta_value_num', 'post__in', 'post_name__in',
     654         *                                                 'post_parent__in', and the array keys of `$meta_query`.
     655         *                                                 Default is 'date', except when a search is being performed,
     656         *                                                 when the default is 'relevance'.
    652657         *     @type int          $p                       Post ID.
    653658         *     @type int          $page                    Show the number of posts that would show up on page X of a
    654659         *                                                 static front page.
    class WP_Query { 
    14621467
    14631468                // Used to filter values.
    14641469                $allowed_keys = array(
    1465                         'post_name', 'post_author', 'post_date', 'post_title', 'post_modified',
    1466                         'post_parent', 'post_type', 'name', 'author', 'date', 'title', 'modified',
    1467                         'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand',
     1470                        'post_name',
     1471                        'post_author',
     1472                        'post_date',
     1473                        'post_date_gmt',
     1474                        'post_title',
     1475                        'post_modified',
     1476                        'post_modified_gmt',
     1477                        'post_parent',
     1478                        'post_type',
     1479                        'post_mime_type',
     1480                        'post_status',
     1481                        'ping_status',
     1482                        'comment_status',
     1483                        'name',
     1484                        'author',
     1485                        'date',
     1486                        'date_gmt',
     1487                        'title',
     1488                        'modified',
     1489                        'modified_gmt',
     1490                        'parent',
     1491                        'type',
     1492                        'ID',
     1493                        'menu_order',
     1494                        'mime_type',
     1495                        'comment_count',
     1496                        'rand',
    14681497                );
    14691498
    14701499                $primary_meta_key = '';
    class WP_Query { 
    14991528                        case 'post_name':
    15001529                        case 'post_author':
    15011530                        case 'post_date':
     1531                        case 'post_date_gmt':
    15021532                        case 'post_title':
    15031533                        case 'post_modified':
     1534                        case 'post_modified_gmt':
    15041535                        case 'post_parent':
    15051536                        case 'post_type':
     1537                        case 'post_status':
     1538                        case 'ping_status':
     1539                        case 'comment_status':
     1540                        case 'post_mime_type':
    15061541                        case 'ID':
    15071542                        case 'menu_order':
    15081543                        case 'comment_count':
  • tests/phpunit/tests/post/query.php

    diff --git tests/phpunit/tests/post/query.php tests/phpunit/tests/post/query.php
    index 6ae8114..e3650cc 100644
    class Tests_Post_Query extends WP_UnitTestCase { 
    360360        }
    361361
    362362        /**
     363         * Tests ordering by post_status in WP_Query.
     364         *
     365         * @ticket 29424
     366         */
     367        public function test_orderby_post_status() {
     368                global $wpdb;
     369               
     370                $q = new WP_Query( array(
     371                        'orderby' => 'post_status',
     372                ) );
     373
     374                $this->assertContains( "ORDER BY {$wpdb->posts}.post_status", $q->request );
     375        }
     376
     377        /**
     378         * Tests ordering by ping_status in WP_Query.
     379         *
     380         * @ticket 29424
     381         */
     382        public function test_orderby_ping_status() {
     383                global $wpdb;
     384               
     385                $q = new WP_Query( array(
     386                        'orderby' => 'ping_status',
     387                ) );
     388
     389                $this->assertContains( "ORDER BY {$wpdb->posts}.ping_status", $q->request );
     390        }
     391
     392        /**
     393         * Tests ordering by comment_status in WP_Query.
     394         *
     395         * @ticket 29424
     396         */
     397        public function test_orderby_comment_status() {
     398                global $wpdb;
     399               
     400                $q = new WP_Query( array(
     401                        'orderby' => 'comment_status',
     402                ) );
     403
     404                $this->assertContains( "ORDER BY {$wpdb->posts}.comment_status", $q->request );
     405        }
     406               
     407        /**
     408         * Tests ordering by date_gmt in WP_Query.
     409         *
     410         * @ticket 29424
     411         */
     412        public function test_orderby_date_gmt() {
     413                global $wpdb;
     414               
     415                $q = new WP_Query( array(
     416                        'orderby' => 'date_gmt',
     417                ) );
     418
     419                $this->assertContains( "ORDER BY {$wpdb->posts}.post_date_gmt", $q->request );
     420        }
     421       
     422        /**
     423         * Tests ordering by post_date_gmt in WP_Query.
     424         *
     425         * @ticket 29424
     426         */
     427        public function test_orderby_post_date_gmt() {
     428                global $wpdb;
     429               
     430                $q = new WP_Query( array(
     431                        'orderby' => 'post_date_gmt',
     432                ) );
     433
     434                $this->assertContains( "ORDER BY {$wpdb->posts}.post_date_gmt", $q->request );
     435        }
     436
     437        /**
     438         * Tests ordering by modified_gmt in WP_Query.
     439         *
     440         * @ticket 29424
     441         */
     442        public function test_orderby_modified_gmt() {
     443                global $wpdb;
     444               
     445                $q = new WP_Query( array(
     446                        'orderby' => 'modified_gmt',
     447                ) );
     448
     449                $this->assertContains( "ORDER BY {$wpdb->posts}.post_modified_gmt", $q->request );
     450        }
     451       
     452        /**
     453         * Tests ordering by post_modified_gmt in WP_Query.
     454         *
     455         * @ticket 29424
     456         */
     457        public function test_orderby_post_modified_gmt() {
     458                global $wpdb;
     459               
     460                $q = new WP_Query( array(
     461                        'orderby' => 'post_modified_gmt',
     462                ) );
     463
     464                $this->assertContains( "ORDER BY {$wpdb->posts}.post_modified_gmt", $q->request );
     465        }
     466       
     467        /**
     468         * Tests ordering by mime_type in WP_Query.
     469         *
     470         * @ticket 29424
     471         */
     472        public function test_orderby_mime_type() {
     473                global $wpdb;
     474               
     475                $q = new WP_Query( array(
     476                        'orderby' => 'mime_type',
     477                ) );
     478
     479                $this->assertContains( "ORDER BY {$wpdb->posts}.post_mime_type", $q->request );
     480        }
     481
     482        /**
     483         * Tests ordering by post_mime_type in WP_Query.
     484         *
     485         * @ticket 29424
     486         */
     487        public function test_orderby_post_mime_type() {
     488                global $wpdb;
     489               
     490                $q = new WP_Query( array(
     491                        'orderby' => 'post_mime_type',
     492                ) );
     493
     494                $this->assertContains( "ORDER BY {$wpdb->posts}.post_mime_type", $q->request );
     495        }
     496       
     497        /**
    363498         * Tests the post_name__in attribute of WP_Query.
    364499         *
    365500         * @ticket 33065