Функция GET_PAGE_HIERARCHY() в WordPress: особенности и примеры использования

Функция 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. Она позволяет упорядочить страницы, делая их структурирование более понятным и удобным для работы. Надеюсь, что данное объяснение было полезным и теперь вы будете уверенно использовать эту функцию в своих проектах!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *