WordPress.org

Make WordPress Core

Ticket #28611: 28611.patch

File 28611.patch, 2.0 KB (added by SergeyBiryukov, 7 years ago)
  • src/wp-includes/query.php

     
    23722372                                if ( !$ptype_obj || !$ptype_obj->query_var || empty($q[ $ptype_obj->query_var ]) )
    23732373                                        continue;
    23742374
    2375                                 if ( ! $ptype_obj->hierarchical || strpos($q[ $ptype_obj->query_var ], '/') === false ) {
    2376                                         // Non-hierarchical post_types & parent-level-hierarchical post_types can directly use 'name'
     2375                                if ( ! $ptype_obj->hierarchical ) {
     2376                                        // Non-hierarchical post types can directly use 'name'.
    23772377                                        $q['name'] = $q[ $ptype_obj->query_var ];
    23782378                                } else {
    2379                                         // Hierarchical post_types will operate through the
     2379                                        // Hierarchical post types will operate through 'pagename'.
    23802380                                        $q['pagename'] = $q[ $ptype_obj->query_var ];
    23812381                                        $q['name'] = '';
    23822382                                }
  • tests/phpunit/tests/query/results.php

     
    636636                $result11 = $this->q->query( array_merge( $args, array( 'post_password' => 'burrito' ) ) );
    637637                $this->assertEqualSets( array( $two, $three ), $result11 );
    638638        }
     639
     640        /**
     641         * @ticket 28611
     642         */
     643        function test_duplicate_slug_in_hierarchical_post_type() {
     644                register_post_type( 'handbook', array( 'hierarchical' => true ) );
     645
     646                $post_1 = $this->factory->post->create( array( 'post_title' => 'Getting Started', 'post_type' => 'handbook' ) );
     647                $post_2 = $this->factory->post->create( array( 'post_title' => 'Contributing to the WordPress Codex', 'post_type' => 'handbook' ) );
     648                $post_3 = $this->factory->post->create( array( 'post_title' => 'Getting Started', 'post_parent' => $post_2, 'post_type' => 'handbook' ) );
     649
     650                $result = $this->q->query( array( 'handbook' => 'getting-started', 'post_type' => 'handbook' ) );
     651                $this->assertEquals( 1, $this->q->post_count );
     652        }
     653
    639654}