WordPress.org

Make WordPress Core

Ticket #36208: 36208.diff

File 36208.diff, 1.8 KB (added by rachelbaker, 4 years ago)

post_type or post_status = any should match WP_Query behavior

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

     
    782782                                        $q_values = explode( ',', $q_values );
    783783                                }
    784784
    785                                 // 'any' will cause the query var to be ignored.
    786785                                if ( in_array( 'any', $q_values, true ) || empty( $q_values ) ) {
    787                                         continue;
     786                                        if ( 'post_type' === $field_name ) {
     787                                                $q_values = get_post_types( array( 'exclude_from_search' => false ) );
     788                                        } else {
     789                                                $q_values = get_post_stati( array( 'exclude_from_search' => false ) );
     790                                        }
    788791                                }
    789792
    790793                                $join_posts_table = true;
  • tests/phpunit/tests/comment/query.php

     
    18281829        }
    18291830
    18301831        /**
     1832         * @ticket 36208
     1833         */
     1834        public function test_post_type_any_ignores_inactive_post_types() {
     1835                register_post_type( 'post-type-1', array( 'exclude_from_search' => false ) );
     1836                register_post_type( 'post-type-2', array( 'exclude_from_search' => false ) );
     1837
     1838                $p1 = self::factory()->post->create( array( 'post_type' => 'post-type-1' ) );
     1839                $p2 = self::factory()->post->create( array( 'post_type' => 'post-type-2' ) );
     1840
     1841                $c1 = self::factory()->comment->create_post_comments( $p1, 1 );
     1842                self::factory()->comment->create_post_comments( $p2, 1 );
     1843
     1844                _unregister_post_type( 'post-type-1' );
     1845                $q = new WP_Comment_Query();
     1846                $found = $q->query( array(
     1847                        'fields' => 'ids',
     1848                        'post_type' => 'any',
     1849                ) );
     1850
     1851                $this->assertEqualSets( array_merge( $c1 ), $found );
     1852        }
     1853
     1854        /**
    18311855         * @ticket 24826
    18321856         */
    18331857        public function test_comment_query_object() {