Функция get_post_parent()
в WordPress используется для получения объекта родительской записи для указанной записи или текущей записи в цикле. Это полезно при работе с вложенными структурами постов, такими как вложенные страницы, настраиваемые типы записей или другие иерархические данные.
get_post_parent( int|WP_Post|null $post = null ): WP_Post|null
Функция возвращает объект родительской записи (объект WP_Post
) или null
, если у записи нет родителя. Работает на основе функции get_post()
, которая получает данные о записи по её ID или объекту записи.
Параметры
$post
(необязательный, число | WP_Post | null) — ID записи или объект записи, для которой нужно получить родителя. По умолчанию используется текущая запись в цикле WordPress, если параметр не указан.
Возвращаемое значение
WP_Post
— Объект записи родителя, если родительская запись существует.null
— Если родительская запись отсутствует.
Пример 1: Получение родительской записи для конкретной страницы
Допустим, у вас есть страница с ID 15
, которая является дочерней для другой страницы. Вы можете получить родительскую запись и вывести её заголовок следующим образом:
$child_post_id = 15; // ID дочерней страницы
$parent_post = get_post_parent( $child_post_id );
if ( $parent_post ) {
echo 'Заголовок родительской страницы: ' . get_the_title( $parent_post );
} else {
echo 'У этой страницы нет родителя.';
}
Этот код проверит наличие родительской страницы для записи с ID 15
и выведет её заголовок, если родитель существует.
Пример 2: Работа с текущей записью в цикле
Внутри цикла WordPress можно автоматически получить родителя для текущей записи без указания её ID:
if ( have_posts() ) : while ( have_posts() ) : the_post();
$parent_post = get_post_parent(); // Получаем родительскую запись для текущего поста
if ( $parent_post ) {
echo 'Родительский пост: ' . get_the_title( $parent_post );
} else {
echo 'Этот пост не имеет родителя.';
}
endwhile; endif;
Пример 3: Проверка наличия родителя с функцией has_post_parent()
Для быстрой проверки наличия родителя у записи можно воспользоваться функцией has_post_parent()
. Этот метод вернет true
, если у записи есть родитель, и false
, если его нет:
$child_post_id = 22;
if ( has_post_parent( $child_post_id ) ) {
echo 'У этой записи есть родитель.';
} else {
echo 'У этой записи нет родителя.';
}
Этот код использует функцию has_post_parent()
для проверки наличия родителя у записи с ID 22
, и в зависимости от результата выведет соответствующее сообщение.
Заключение
Функция get_post_parent()
— это мощный инструмент для работы с иерархией записей в WordPress. Она позволяет легко получать родительские записи для страниц, постов и кастомных типов записей, что делает её полезной при создании сложных структур контента.