Как проверить, является ли страница прямой или косвенной дочерней страницей другой страницы в Wordpress?


У меня есть страница с идентификатором 63. У этой страницы есть несколько дочерних страниц, и каждая из дочерних страниц снова имеет подстраницы. Короче говоря, страница с идентификатором 63 является супер-родителем для всех страниц.

Я хочу проверить, является ли текущая страница дочерней страницы с идентификатором 63. Либо прямой ребенок / ребенок ребенка до любого уровня.

Я могу проверить, является ли страница дочерней страницы 63. Но не в состоянии проверить то же самое для дочерних дочерних страниц.

Я есть использование $post->post_parent == 63 для проверки того, является ли страница дочерней по отношению к странице 63.

Как я могу проверить то же самое для всех уровней страниц ?

2 2

2 ответа:

Вы можете использовать get_post_ancestors () следующим образом:

$parents = get_post_ancestors($post);
 foreach($parents as $page_id){
    if($page_id == ID of specific parent page){

    // Do something

    break; //Match found, no need to keep checking
    }
 }
    $pageId= get_the_ID(); 
    function get_topmost_parent($post_id)
    {
        $parent_id = get_post($post_id)->post_parent;
        if($parent_id == 0)
        {
            return $post_id;
        }
        else
        {
            return get_topmost_parent($parent_id);
        }
    }