get_post_ancestors() WP 2.5.0
Получает ID всех родительских записей к указанной. Возвращает массив из ID родительских записей. Если родительских записей нет, то будет возвращен пустой массив.
Является основой для:
get_ancestors()
Работает на основе:
get_post()
✈ 1 раз = 0.001242с = очень медленно | 50000 раз = 0.33с = очень быстро | PHP 7.2.5, WP 5.0.1
Хуков нет.
Возвращает
Массив. 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 | Введена. |
Вот я не понимаю как сделать родительский пост пример вот
1-Сам пост http://www.hipstrumentals.com/2011/11/kid-ink-like-a-g-instrumental-hook/
2-родительский пост http://www.hipstrumentals.com/2011/11/kid-ink-like-a-g-instrumental-hook/kid-ink-ft-travis-porter-like-a-g-instrumental/
Че это еще за определение родительский пост? Пост — одноуровневый тип записи, который объединяется категориями. Родительскими могут быть только постоянные страницы — у них многоуровневая структура.
Ничего подобного. Я как раз нашел этот пост потому что искал информацию о том, как создавать родительские посты. Тут дело не в иерархии. Посмотрите как реализованы вариаии товара в wp e commerce
В таблице постов есть поле "родитель". Теоретически конечно можно создать дочерний пост, к посту. Но, это уже нестандартный подход и нужно будет под это дело писать код отдельный (плагин) или что-то в этом роде. Базово, ВП такое не поддерживает, насколько я знаю.
Кстати, если есть на примете такой плагин, не могли бы поделиться. Только интересует плагин отдельно под это дело, а не как одна из функций, какого-то плагина.