Функция get_page_children()
в WordPress предназначена для сбора дочерних страниц, относящихся к определенной родительской странице. Эта функция обрабатывает массив страниц и возвращает все дочерние страницы, учитывая все уровни вложенности. Она полезна при создании навигационных элементов, таких как меню или подменю, где требуется учитывать структуру и иерархию страниц.
get_page_children( $parent_id, $pages = array() );
Параметры
$parent_id
(int) (обязательный): ID страницы, дочерние страницы которой вы хотите получить.$pages
(array) (необязательный): Массив объектов страниц, по которому будет происходить поиск дочерних страниц. Если параметр не указан, будут возвращены дочерние страницы из всех страниц, зарегистрированных в системе.
Возвращаемое значение
Функция возвращает массив объектов WP_Post
, которые представляют дочерние страницы. Каждый объект содержит информацию о странице, такую как ID, заголовок, статус публикации и другие метаданные.
Пример использования
Предположим, у вас есть страница с ID 42, и вы хотите получить все дочерние страницы этой страницы и вывести их в виде списка. Функция возвращает страницы в порядке их ID, что соответствует порядку создания страниц.
<?php
// Получаем дочерние страницы страницы с ID 42
$parent_id = 42;
$children = get_page_children( $parent_id );
// Проверяем, есть ли дочерние страницы
if ( !empty( $children ) ) {
echo '<ul>';
foreach ( $children as $child ) {
// Выводим заголовок и ссылку на дочернюю страницу
echo '<li><a href="' . get_permalink( $child->ID ) . '">' . esc_html( $child->post_title ) . '</a></li>';
}
echo '</ul>';
} else {
echo 'У данной страницы нет дочерних страниц.';
}
?>
Примечания
- Функция
get_page_children()
не делает запросов к базе данных. Вместо этого она фильтрует предоставленный массив страниц, находя дочерние страницы для указанного ID. Это позволяет эффективно работать с данными, если все страницы уже загружены. - Функция не имеет хуков, что означает, что вы не можете напрямую изменять её поведение с помощью фильтров или действий.
Альтернативные функции
Если вам необходимо получить дочерние страницы с более сложными условиями или сортировкой, рассмотрите использование функции get_pages()
с соответствующими аргументами:
<?php
$args = array(
'post_type' => 'page',
'post_parent' => $parent_id,
'orderby' => 'title',
'order' => 'ASC'
);
$children_pages = get_pages( $args );
if ( !empty( $children_pages ) ) {
echo '<ul>';
foreach ( $children_pages as $page ) {
echo '<li><a href="' . get_permalink( $page->ID ) . '">' . esc_html( $page->post_title ) . '</a></li>';
}
echo '</ul>';
} else {
echo 'У данной страницы нет дочерних страниц.';
}
?>
Заключение
Функция get_page_children()
упрощает работу с иерархией страниц в WordPress, позволяя эффективно извлекать дочерние страницы из заданного массива. Она идеально подходит для создания навигационных элементов и управления структурой контента, обеспечивая простоту и производительность при работе с иерархией страниц.