WordPress.org

Make WordPress Core

Ticket #25750: 25750.2.diff

File 25750.2.diff, 1.9 KB (added by nacin, 6 years ago)
  • src/wp-includes/post.php

     
    37063706        if ( !in_array( $post_type, $hierarchical_post_types ) )
    37073707                return $pages;
    37083708
    3709         if ( $parent && ! $child_of )
     3709        if ( $parent > 0 && ! $child_of )
    37103710                $hierarchical = false;
    37113711
    37123712        // Make sure we have a valid post status
  • tests/phpunit/tests/post.php

     
    879879                $pages = get_pages( array( 'parent' => array( $page_id1, $page_id2 ) ) );
    880880                $this->assertEqualSets( array( $page_id2, $page_id3, $page_id4 ), wp_list_pluck( $pages, 'ID' ) );
    881881        }
     882
     883        /**
     884         * @ticket 25750
     885         */
     886        function test_get_pages_hierarchical_and_no_parent() {
     887                global $wpdb;
     888                $page_1 = $this->factory->post->create( array( 'post_type' => 'page' ) );
     889                $page_2 = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_1 ) );
     890                $page_3 = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_1 ) );
     891                $page_4 = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_2 ) );
     892
     893                $pages = get_pages(); // Defaults: hierarchical = true, parent = -1
     894                $pages_default_args = get_pages( array( 'hierarchical' => true, 'parent' => -1 ) );
     895                // Confirm the defaults.
     896                $this->assertEquals( $pages, $pages_default_args );
     897
     898                /*
     899                 * Here's the tree we are testing:
     900                 *
     901                 * page 1
     902                 * - page 2
     903                 * -- page 4
     904                 * - page 3
     905                 *
     906                 * If hierarchical => true works, the order will be 1,2,4,3.
     907                 * If it doesn't, they will be in the creation order, 1,2,3,4.
     908                 */
     909
     910                $this->assertEqualSets( array( $page_1, $page_2, $page_4, $page_3 ), wp_list_pluck( $pages, 'ID' ) );
     911        }
    882912}