get_page_hierarchy()
Сортирует массив с древовидными записями, так что дочерние записи будут расположены после родительских. Вернет урезанный отсортированный массив.
В WP эта функция применяется для построения URL для древовидных записей. Однако бывают ситуации когда она может быть удобна для других целей.
Хуков нет.
Возвращает
Строку[]
. Массив где элементы отсортированы по дереву - дочерний элемент находится после родительского. Массив содержит в ключе 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.7.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; }