WordPress.org

Make WordPress Core

Ticket #28099: 28099-revert.2.diff

File 28099-revert.2.diff, 4.9 KB (added by wonderboymusic, 7 years ago)
  • src/wp-includes/query.php

     
    18301830                                'field' => 'term_id',
    18311831                                'include_children' => false
    18321832                        );
    1833                 } elseif ( isset( $this->query['category__in'] ) ) {
    1834                         $q['category__in'] = false;
    18351833                }
    18361834
    18371835                if ( ! empty($q['category__not_in']) ) {
     
    18891887                                'taxonomy' => 'post_tag',
    18901888                                'terms' => $q['tag__in']
    18911889                        );
    1892                 } elseif ( isset( $this->query['tag__in'] ) ) {
    1893                         $q['tag__in'] = false;
    18941890                }
    18951891
    18961892                if ( !empty($q['tag__not_in']) ) {
     
    19181914                                'terms' => $q['tag_slug__in'],
    19191915                                'field' => 'slug'
    19201916                        );
    1921                 } elseif ( isset( $this->query['tag_slug__in'] ) ) {
    1922                         $q['tag_slug__in'] = false;
    19231917                }
    19241918
    19251919                if ( !empty($q['tag_slug__and']) ) {
     
    24512445                } elseif ( $q['post__in'] ) {
    24522446                        $post__in = implode(',', array_map( 'absint', $q['post__in'] ));
    24532447                        $where .= " AND {$wpdb->posts}.ID IN ($post__in)";
    2454                 } elseif ( isset( $this->query['post__in'] ) ) {
    2455                         $post__in = 0;
    2456                         $where .= " AND 1=0 ";
    24572448                } elseif ( $q['post__not_in'] ) {
    24582449                        $post__not_in = implode(',',  array_map( 'absint', $q['post__not_in'] ));
    24592450                        $where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)";
     
    24642455                } elseif ( $q['post_parent__in'] ) {
    24652456                        $post_parent__in = implode( ',', array_map( 'absint', $q['post_parent__in'] ) );
    24662457                        $where .= " AND {$wpdb->posts}.post_parent IN ($post_parent__in)";
    2467                 } elseif ( isset( $this->query['post_parent__in'] ) ) {
    2468                         $post_parent__in = 0;
    2469                         $where .= " AND 1=0 ";
    24702458                } elseif ( $q['post_parent__not_in'] ) {
    24712459                        $post_parent__not_in = implode( ',',  array_map( 'absint', $q['post_parent__not_in'] ) );
    24722460                        $where .= " AND {$wpdb->posts}.post_parent NOT IN ($post_parent__not_in)";
     
    25062494                        $where .= $clauses['where'];
    25072495                }
    25082496
    2509                 // If *__in is passed to WP_Query as an empty array, don't return results
    2510                 foreach ( array( 'category', 'tag', 'tag_slug' ) as $in ) {
    2511                         if ( isset( $q["{$in}__in"] ) && false === $q["{$in}__in"] ) {
    2512                                 $where = " AND 1=0 $where";
    2513                         }
    2514                 }
    2515 
    25162497                if ( $this->is_tax ) {
    25172498                        if ( empty($post_type) ) {
    25182499                                // Do a fully inclusive search for currently registered post types of queried taxonomies
     
    26042585                } elseif ( ! empty( $q['author__in'] ) ) {
    26052586                        $author__in = implode( ',', array_map( 'absint', array_unique( (array) $q['author__in'] ) ) );
    26062587                        $where .= " AND {$wpdb->posts}.post_author IN ($author__in) ";
    2607                 } elseif ( isset( $this->query['author__in'] ) ) {
    2608                         $author__in = 0;
    2609                         $where .= ' AND 1=0 ';
    26102588                }
    26112589
    26122590                // Author stuff for nice URLs
  • tests/phpunit/tests/query/results.php

     
    402402
    403403        }
    404404
     405        /**
     406         * @ticket 28099
     407         */
    405408        function test_empty_post__in() {
    406409                $posts1 = $this->q->query( array() );
    407410                $this->assertNotEmpty( $posts1 );
    408411                $posts2 = $this->q->query( array( 'post__in' => array() ) );
    409                 $this->assertEmpty( $posts2 );
     412                $this->assertNotEmpty( $posts2 );
    410413                $posts3 = $this->q->query( array( 'post_parent__in' => array() ) );
    411                 $this->assertEmpty( $posts3 );
     414                $this->assertNotEmpty( $posts3 );
    412415        }
    413416
    414417        function test_exlude_from_search_empty() {
     
    514517                $this->assertEqualSets( array( $author_1, $author_2 ), $author_ids );
    515518
    516519                $posts = $this->q->query( array( 'author__in' => array() ) );
    517                 $this->assertEmpty( $posts );
     520                $this->assertNotEmpty( $posts );
    518521
    519522                $posts = $this->q->query( array(
    520523                        'author__not_in' => array( $author_1, $author_2 ),
  • tests/phpunit/tests/term/query.php

     
    203203                $this->assertEquals( array( $posts[0], $posts[3] ), $results2, 'Relation: AND; Operator: IN' );
    204204        }
    205205
     206        /**
     207         * @ticket 28099
     208         */
    206209        function test_empty__in() {
    207210                $cat_id = $this->factory->category->create();
    208211                $post_id = $this->factory->post->create();
     
    211214                $q1 = get_posts( array( 'category__in' => array( $cat_id ) ) );
    212215                $this->assertNotEmpty( $q1 );
    213216                $q2 = get_posts( array( 'category__in' => array() ) );
    214                 $this->assertEmpty( $q2 );
     217                $this->assertNotEmpty( $q2 );
    215218
    216219                $tag = wp_insert_term( 'woo', 'post_tag' );
    217220                $tag_id = $tag['term_id'];
     
    221224                $q3 = get_posts( array( 'tag__in' => array( $tag_id ) ) );
    222225                $this->assertNotEmpty( $q3 );
    223226                $q4 = get_posts( array( 'tag__in' => array() ) );
    224                 $this->assertEmpty( $q4 );
     227                $this->assertNotEmpty( $q4 );
    225228
    226229                $q5 = get_posts( array( 'tag_slug__in' => array( $slug ) ) );
    227230                $this->assertNotEmpty( $q5 );
    228231                $q6 = get_posts( array( 'tag_slug__in' => array() ) );
    229                 $this->assertEmpty( $q6 );
     232                $this->assertNotEmpty( $q6 );
    230233        }
    231234}