WordPress.org

Make WordPress Core

Ticket #15459: 15459.3.diff

File 15459.3.diff, 4.9 KB (added by rodrigosprimo, 7 years ago)
  • src/wp-admin/includes/class-wp-posts-list-table.php

    diff --git src/wp-admin/includes/class-wp-posts-list-table.php src/wp-admin/includes/class-wp-posts-list-table.php
    index 60edd63..5d82d67 100644
    class WP_Posts_List_Table extends WP_List_Table { 
    428428                $count = 0;
    429429                $start = ( $pagenum - 1 ) * $per_page;
    430430                $end = $start + $per_page;
     431                $to_display = array();
    431432
    432433                foreach ( $pages as $page ) {
    433434                        if ( $count >= $end )
    434435                                break;
    435436
    436437                        if ( $count >= $start ) {
    437                                 echo "\t";
    438                                 $this->single_row( $page, $level );
     438                                $to_display[$page->ID] = $level;
    439439                        }
    440440
    441441                        $count++;
    442442
    443443                        if ( isset( $children_pages ) )
    444                                 $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
     444                                $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display );
    445445                }
    446446
    447447                // if it is the last pagenum and there are orphaned pages, display them with paging as well
    class WP_Posts_List_Table extends WP_List_Table { 
    452452                                                break;
    453453
    454454                                        if ( $count >= $start ) {
    455                                                 echo "\t";
    456                                                 $this->single_row( $op, 0 );
     455                                                $to_display[$op->ID] = 0;
    457456                                        }
    458457
    459458                                        $count++;
    460459                                }
    461460                        }
    462461                }
     462
     463                $ids = array_keys( $to_display );
     464                _prime_post_caches( $ids );
     465
     466                if ( ! isset( $GLOBALS['post'] ) ) {
     467                        // touch_time() requires a global post set
     468                        $GLOBALS['post'] = array_shift( $ids );
     469                }
     470
     471                foreach ( $to_display as $page_id => $level ) {
     472                        echo "\t";
     473                        $this->single_row( $page_id, $level );
     474                }
    463475        }
    464476
    465477        /**
    class WP_Posts_List_Table extends WP_List_Table { 
    474486         * @param int $level
    475487         * @param int $pagenum
    476488         * @param int $per_page
     489         * @param array $to_display list of pages to be displayed
    477490         */
    478         private function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) {
     491        private function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page, &$to_display ) {
    479492
    480493                if ( ! isset( $children_pages[$parent] ) )
    481494                        return;
    class WP_Posts_List_Table extends WP_List_Table { 
    493506                                $my_parents = array();
    494507                                $my_parent = $page->post_parent;
    495508                                while ( $my_parent ) {
    496                                         $my_parent = get_post( $my_parent );
     509                                        $my_parent = get_post( $my_parent->ID );
    497510                                        $my_parents[] = $my_parent;
    498511                                        if ( !$my_parent->post_parent )
    499512                                                break;
    class WP_Posts_List_Table extends WP_List_Table { 
    501514                                }
    502515                                $num_parents = count( $my_parents );
    503516                                while ( $my_parent = array_pop( $my_parents ) ) {
    504                                         echo "\t";
    505                                         $this->single_row( $my_parent, $level - $num_parents );
     517                                        $to_display[$my_parent->ID] = $level - $num_parents;
    506518                                        $num_parents--;
    507519                                }
    508520                        }
    509521
    510522                        if ( $count >= $start ) {
    511                                 echo "\t";
    512                                 $this->single_row( $page, $level );
     523                                $to_display[$page->ID] = $level;
    513524                        }
    514525
    515526                        $count++;
    516527
    517                         $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
     528                        $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display );
    518529                }
    519530
    520531                unset( $children_pages[$parent] ); //required in order to keep track of orphans
    class WP_Posts_List_Table extends WP_List_Table { 
    525536                static $alternate;
    526537
    527538                $global_post = get_post();
     539
     540                if ( is_integer( $post ) ) {
     541                        $post = get_post( $post );
     542                }
     543               
    528544                $GLOBALS['post'] = $post;
    529545                setup_postdata( $post );
    530546
  • src/wp-admin/includes/post.php

    diff --git src/wp-admin/includes/post.php src/wp-admin/includes/post.php
    index 4227e62..5f7e66c 100644
    function wp_edit_posts_query( $q = false ) { 
    984984                $query['order'] = 'asc';
    985985                $query['posts_per_page'] = -1;
    986986                $query['posts_per_archive_page'] = -1;
     987                $query['fields'] = 'id=>parent';
    987988        }
    988989
    989990        if ( ! empty( $q['show_sticky'] ) )
  • src/wp-includes/class-wp.php

    diff --git src/wp-includes/class-wp.php src/wp-includes/class-wp.php
    index 17a3be3..1ec4381 100644
    class WP { 
    2525         * @since 2.0.0
    2626         * @var array
    2727         */
    28         public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in' );
     28        public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'fields' );
    2929
    3030        /**
    3131         * Extra query variables set by the user.