get_page_hierarchy()
Сортує масив із деревоподібними записами, тому дочірні записи будуть розташовані після батьківських. Поверне відрізаний відсортований масив.
У WP ця функція застосовується для створення URL для деревоподібних записів. Однак бувають ситуації коли вона може бути зручною для інших цілей.
_page_traverse_name()
(дуже швидко) | 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
Приклади
#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() 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; }