get_page_hierarchy() WP 2.0.0

Сортує масив із деревоподібними записами, тому дочірні записи будуть розташовані після батьківських. Поверне відрізаний відсортований масив.

У WP ця функція застосовується для створення URL для деревоподібних записів. Однак бувають ситуації коли вона може бути зручною для інших цілей.

Працює на основі:
_page_traverse_name()
1 раз – 0.000018 сек
(дуже швидко) | 50000 разів – 0.18 сек
(дуже швидко) |
PHP 7.0.8, WP 4.6

Хуків немає.

Повертає

Строку[]. Масив, де елементи відсортовані по дереву – дочірній елемент знаходиться після батьківського. Масив містить у ключі ID запису, а значення ярлик (slug) записи.

Array
(
	[54] => hooks
	[44] => resursyi-o-wordpress
	[26] => comment-manager
	[39] => statistics
)

Використання

get_page_hierarchy($pages, $page_id);
$pages
(масив) (обов’язковий)
Масив об’єктів деревоподібних записів, які потрібно відсортувати на дереві. Параметр передається за посиланням…
$page_id
(число)
ID батьківського запису (сторінки).


За замовчуванням: 0

Приклади

0

#1 Демонстрація сортування деревини

Щоб було наочніше, я прибрав більшу частину полів, які є у кожного запису. У цьому сортуванні беруть участь 3 поля: ID, post_parent та post_name.

Отже, що робить функція? Як видно з прикладу, у нас був масив записів, де один запис є дочірнім до іншого. Але порядок цих записів у масиві хаотичний.

Ця функція сортує всі елементи масиву так, що кожен наступний елемент є дочірнім до попереднього. Після цього функція створює новий масив і поміщає ID запису в ключ цього масиву, а значення розміщується ярлик записи. У результаті отриманого масиву ми легко можемо створити дерево записів.

$pages = array(
  (object) array(
	 'ID' => 111,
	 'post_name' => 'hooks',
	 'post_parent' => 0,
  ),
  (object) array(
	 'ID' => 222,
	 'post_name' => 'comment-manager',
	 'post_parent' => 444,
  ),
  (object) array(
	 'ID' => 333,
	 'post_name' => 'statistics',
	 'post_parent' => 444,
  ),
  (object) array(
	 'ID' => 444,
	 'post_name' => 'resursyi-o-wordpress',
	 'post_parent' => 111,
  ),
);

$ pages = get_page_hierarchy ($ pages);

/* $pages дорівнюватиме:
Array
(
	[111] => hooks
	[444] => resursyi-o-wordpress
	[222] => comment-manager
	[333] => statistics
)
*/

список змін

З версії 2.0.0Введено.

Код get_page_hierarchy() WP 6.0.2

function get_page_hierarchy( &$pages, $page_id = 0 ) {
	if ( empty( $pages ) ) {
		return array();
	}

	$children = array();
	foreach ((array) $pages as $p) {
		$parent_id = (int) $p->post_parent;
		$children[ $parent_id ][] = $p;
	}

	$result = array();
	_page_traverse_name($page_id, $children, $result);

	return $result;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *