Функция GET_PAGE_HIERARCHY() в WordPress
Функция GET_PAGE_HIERARCHY()
используется для упорядочивания страниц, у которых есть дочерние элементы, и отображения их в виде плоского списка. Данная функция работает быстро и эффективно, используя вспомогательную структуру для хранения отношений "родитель-дочерний".
Что такое GET_PAGE_HIERARCHY()?
Функция get_page_hierarchy()
сортирует страницы, так что дочерние страницы идут сразу после своих родительских. Это полезно для создания иерархии страниц, чтобы легче было их отображать или обрабатывать.
Основные характеристики
- Сложность: O(N) — это быстрая операция, что означает, что время работы функции пропорционально количеству страниц.
- Возврат: Массив с названиями страниц, упорядоченными по иерархии. Родительские страницы идут перед дочерними.
Использование функции
Чтобы использовать эту функцию, вы можете воспользоваться следующим синтаксисом:
get_page_hierarchy( $pages, $page_id );
Параметры
- $pages (массив объектов WP_Post) — массив публикаций, необходимых для упорядочивания. Этот параметр передается по ссылке.
- $page_id (целое число) — ID родительской страницы. По умолчанию равен 0.
Пример работы функции
Рассмотрим пример, чтобы понять, как работает эта функция. Допустим, у нас есть массив с данными о страницах:
$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, // Дочерняя страница
),
);
Теперь применим функцию get_page_hierarchy()
:
$pages = get_page_hierarchy( $pages );
После выполнения данной функции массив $pages
будет содержать следующее:
Array
(
[111] => hooks
[444] => resursyi-o-wordpress
[222] => comment-manager
[333] => statistics
)
Объяснение примера
В этом примере:
- Страница
hooks
(ID 111) является родительской. - Страница
resursyi-o-wordpress
(ID 444) — дочерняя страница дляhooks
. - Страницы
comment-manager
(ID 222) иstatistics
(ID 333) я��ляются дочерними элементамиresursyi-o-wordpress
.
Это позволяет вам легко смоделировать дерево страниц.
Код функции
Вот как выглядит реализация функции get_page_hierarchy()
:
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; // Получаем ID родителя
$children[ $parent_id ][] = $p; // Группируем детей по родительскому ID
}
$result = array();
_page_traverse_name( $page_id, $children, $result ); // Запускаем вспомогательную функцию
return $result; // Возвращаем результат
}
Заключение
Функция get_page_hierarchy()
— это мощный инструмент для работы с иерархией страниц в WordPress. Она позволяет упорядочить страницы, делая их структурирование более понятным и удобным для работы. Надеюсь, что данное объяснение было полезным и теперь вы будете уверенно использовать эту функцию в своих проектах!