WordPress.org

Make WordPress Core

Ticket #15459: 15459.2.diff

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

    diff --git a/src/wp-admin/includes/class-wp-posts-list-table.php b/src/wp-admin/includes/class-wp-posts-list-table.php
    index 2453618..bd2261d 100644
    a b class WP_Posts_List_Table extends WP_List_Table { 
    378378                $count = 0;
    379379                $start = ( $pagenum - 1 ) * $per_page;
    380380                $end = $start + $per_page;
     381                $to_display = array();
    381382
    382383                foreach ( $pages as $page ) {
    383384                        if ( $count >= $end )
    384385                                break;
    385386
    386387                        if ( $count >= $start ) {
    387                                 echo "\t";
    388                                 $this->single_row( $page, $level );
     388                                $to_display[$page->ID] = $level;
    389389                        }
    390390
    391391                        $count++;
    392392
    393393                        if ( isset( $children_pages ) )
    394                                 $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
     394                                $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display );
    395395                }
    396396
    397397                // 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 { 
    402402                                                break;
    403403
    404404                                        if ( $count >= $start ) {
    405                                                 echo "\t";
    406                                                 $this->single_row( $op, 0 );
     405                                                $to_display[$op->ID] = 0;
    407406                                        }
    408407
    409408                                        $count++;
    410409                                }
    411410                        }
    412411                }
     412
     413                $ids = array_keys( $to_display );
     414                _prime_post_caches( $ids );
     415
     416                if ( ! isset( $GLOBALS['post'] ) ) {
     417                        // touch_time() requires a global post set
     418                        $GLOBALS['post'] = array_shift( $ids );
     419                }
     420
     421                foreach ( $to_display as $page_id => $level ) {
     422                        echo "\t";
     423                        $this->single_row( $page_id, $level );
     424                }
    413425        }
    414426
    415427        /**
    class WP_Posts_List_Table extends WP_List_Table { 
    424436         * @param int $level
    425437         * @param int $pagenum
    426438         * @param int $per_page
     439         * @param array $to_display list of pages to be displayed
    427440         */
    428         function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) {
     441        function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page, &$to_display ) {
    429442
    430443                if ( ! isset( $children_pages[$parent] ) )
    431444                        return;
    class WP_Posts_List_Table extends WP_List_Table { 
    443456                                $my_parents = array();
    444457                                $my_parent = $page->post_parent;
    445458                                while ( $my_parent ) {
    446                                         $my_parent = get_post( $my_parent );
     459                                        $my_parent = get_post( $my_parent->ID );
    447460                                        $my_parents[] = $my_parent;
    448461                                        if ( !$my_parent->post_parent )
    449462                                                break;
    class WP_Posts_List_Table extends WP_List_Table { 
    451464                                }
    452465                                $num_parents = count( $my_parents );
    453466                                while ( $my_parent = array_pop( $my_parents ) ) {
    454                                         echo "\t";
    455                                         $this->single_row( $my_parent, $level - $num_parents );
     467                                        $to_display[$my_parent->ID] = $level - $num_parents;
    456468                                        $num_parents--;
    457469                                }
    458470                        }
    459471
    460472                        if ( $count >= $start ) {
    461                                 echo "\t";
    462                                 $this->single_row( $page, $level );
     473                                $to_display[$page->ID] = $level;
    463474                        }
    464475
    465476                        $count++;
    466477
    467                         $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page );
     478                        $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display );
    468479                }
    469480
    470481                unset( $children_pages[$parent] ); //required in order to keep track of orphans
    class WP_Posts_List_Table extends WP_List_Table { 
    475486                static $alternate;
    476487
    477488                $global_post = get_post();
     489
     490                if ( is_integer( $post ) ) {
     491                        $post = get_post( $post );
     492                }
     493               
    478494                $GLOBALS['post'] = $post;
    479495                setup_postdata( $post );
    480496
  • src/wp-admin/includes/post.php

    diff --git a/src/wp-admin/includes/post.php b/src/wp-admin/includes/post.php
    index 983e4e7..485e510 100644
    a b function wp_edit_posts_query( $q = false ) { 
    899899                $query['order'] = 'asc';
    900900                $query['posts_per_page'] = -1;
    901901                $query['posts_per_archive_page'] = -1;
     902                $query['fields'] = 'id=>parent';
    902903        }
    903904
    904905        if ( ! empty( $q['show_sticky'] ) )
  • src/wp-includes/class-wp.php

    diff --git a/src/wp-includes/class-wp.php b/src/wp-includes/class-wp.php
    index 2fe76fc..f6eb47c 100644
    a b class WP { 
    2525         * @since 2.0.0
    2626         * @var array
    2727         */
    28         var $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__in', 'post_parent__not_in' );
     28        var $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__in', 'post_parent__not_in', 'fields' );
    2929
    3030        /**
    3131         * Extra query variables set by the user.