get_post_ancestors()
Получает ID всех родительских записей к указанной в виде массива.
Работает на основе: get_post()
Основа для: get_ancestors()
1 раз — 0.001242 сек (очень медленно) | 50000 раз — 0.33 сек (очень быстро) | PHP 7.2.5, WP 5.0.1
Хуков нет.
Возвращает
int[]
. Возвращает массив из ID родительских записей. Если родительских записей нет, то будет возвращен пустой массив.
Использование
get_post_ancestors( $post_id );
- $post_id(число/объект) (обязательный)
- ID или объект записи (поста), родителей которого нужно получить.
Примеры
#1 Демонстрация
Допустим страница 30 является дочерней к 20, а 20 дочерней к 10. Т.е. 10 - страница верхнего уровня, а порядок сверху вниз по дереву такой: 10 > 20 > 30.
Тогда:
$ancestors = get_post_ancestors( 30 ); /* Вернет Array ( [0] => 20 [1] => 10 ) */
#2 Выведем заголовок самой родительской страницы
Пусть структура наших страниц такая:
Страница 1 (ID=611) - Страница 1-1 (ID=613) - Страница 1-1-1 (ID=615) - Страница 1-1-1-1 (ID=617) Страница 2 (ID=712) - Страница 2-1 (ID=755) - Страница 2-2 (ID=781)
Получим заголовок самой родительской страницы:
// Получаем массив с id всех родителей (передаём ID Страница 1-1-1-1) $ids = get_post_ancestors( 617 ); /* Вернет Array ( [0] => 615 [1] => 613 [2] => 611 ) */ // Берём последний ID из массива - это ID самой верхней страницы $id = array_pop( $ids ); // Выводим заголовок этой страницы echo get_the_title( $id ); // выведет Страница 1
#3 Проверим есть ли дочерняя страница
У нас есть вложенная структура постоянных страниц и нам нужно проверить является ли ID 34 родителем для страницы 12:
$ancestors = get_post_ancestors( 12 ); if( in_array(34, $ancestors) ) echo "пост 34 - это родительский к 12"; else echo "пост 34 не является родителем поста 12";
Список изменений
С версии 2.5.0 | Введена. |