get_post_ancestors

Получает ID всех родительских страниц к указанной странице. Возвращает массив ID родительских страниц, если родительских страниц нет, то будет возвращен пустой массив.

Хуков нет.

Использование

get_post_ancestors( $post_id );
$post_id(число) (обязательный)
Идентификатор поста.

Примеры

#1 Проверим есть ли дочерняя страница

У нас есть вложенная структура постоянных страниц и нам нужно проверить является ли ID 34 родителем для страницы 12:

$ancestors = get_post_ancestors(12);
if( in_array(34, $ancestors) )
	echo "пост 34 - это родительский к 12";
else
	echo "пост 34 не является родителем поста 12";

Код из


wp-includes/post.php

WP 4.7.2

<?php
function get_post_ancestors( $post ) {
	$post = get_post( $post );

	if ( ! $post || empty( $post->post_parent ) || $post->post_parent == $post->ID )
		return array();

	$ancestors = array();

	$id = $ancestors[] = $post->post_parent;

	while ( $ancestor = get_post( $id ) ) {
		// Loop detection: If the ancestor has been seen before, break.
		if ( empty( $ancestor->post_parent ) || ( $ancestor->post_parent == $post->ID ) || in_array( $ancestor->post_parent, $ancestors ) )
			break;

		$id = $ancestors[] = $ancestor->post_parent;
	}

	return $ancestors;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *