WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

WP_Posts_List_Table::_display_rows_hierarchical() WP 1.0

Это метод класса: WP_Posts_List_Table

Хуков нет.

Возвращает

Null. Ничего.

Использование

$WP_Posts_List_Table = new WP_Posts_List_Table();
$var = $WP_Posts_List_Table->_display_rows_hierarchical( $pages, $pagenum, $per_page );
$pages(массив) (обязательный)
$pagenum(число)

По умолчанию: 1
$per_page(число)

По умолчанию: 20

Заметки

  • Global. wpdb. $wpdb
  • Global. WP_Post. $post

Код WP Posts List Table:: display rows hierarchical: wp-admin/includes/class-wp-posts-list-table.php WP 5.2.2

<?php
private function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) {
	global $wpdb;

	$level = 0;

	if ( ! $pages ) {
		$pages = get_pages( array( 'sort_column' => 'menu_order' ) );

		if ( ! $pages ) {
			return;
		}
	}

	/*
	 * Arrange pages into two parts: top level pages and children_pages
	 * children_pages is two dimensional array, eg.
	 * children_pages[10][] contains all sub-pages whose parent is 10.
	 * It only takes O( N ) to arrange this and it takes O( 1 ) for subsequent lookup operations
	 * If searching, ignore hierarchy and treat everything as top level
	 */
	if ( empty( $_REQUEST['s'] ) ) {

		$top_level_pages = array();
		$children_pages  = array();

		foreach ( $pages as $page ) {

			// Catch and repair bad pages.
			if ( $page->post_parent == $page->ID ) {
				$page->post_parent = 0;
				$wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) );
				clean_post_cache( $page );
			}

			if ( 0 == $page->post_parent ) {
				$top_level_pages[] = $page;
			} else {
				$children_pages[ $page->post_parent ][] = $page;
			}
		}

		$pages = &$top_level_pages;
	}

	$count      = 0;
	$start      = ( $pagenum - 1 ) * $per_page;
	$end        = $start + $per_page;
	$to_display = array();

	foreach ( $pages as $page ) {
		if ( $count >= $end ) {
			break;
		}

		if ( $count >= $start ) {
			$to_display[ $page->ID ] = $level;
		}

		$count++;

		if ( isset( $children_pages ) ) {
			$this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page, $to_display );
		}
	}

	// If it is the last pagenum and there are orphaned pages, display them with paging as well.
	if ( isset( $children_pages ) && $count < $end ) {
		foreach ( $children_pages as $orphans ) {
			foreach ( $orphans as $op ) {
				if ( $count >= $end ) {
					break;
				}

				if ( $count >= $start ) {
					$to_display[ $op->ID ] = 0;
				}

				$count++;
			}
		}
	}

	$ids = array_keys( $to_display );
	_prime_post_caches( $ids );

	if ( ! isset( $GLOBALS['post'] ) ) {
		$GLOBALS['post'] = reset( $ids );
	}

	foreach ( $to_display as $page_id => $level ) {
		echo "\t";
		$this->single_row( $page_id, $level );
	}
}