WordPress поможет с проверкой родительской страницы - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть эта функция, которая проверяет, является ли страница родительской:

function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
        global $post;         // load details about this page
        if(is_page()&&($post->post_parent==$pid||is_page($pid)))
               return true;   // we're at the page or at a sub page
        else
               return false;  // we're elsewhere
};

и используйте его для отображения меню:

<?php if (is_tree(6) || is_page(6)) { menu code here } ?>

Однако это работает только для непосредственных подстраниц, а не для подстраниц, например,

domain.com/page1.0/page1.1/page1.1.1/

Если page1.0 имеет идентификатор 6, меню появится на стр. 1.0 и 1.1, но не 1.1.1

Как я могу изменить код, чтобы функция дерева работала для НИЧЕГО, что находится ниже указанного идентификатора страницы, а НЕ только для НЕМЕДЛЕННЫХ подстраниц.

Спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Использование get_post_ancestors():

function is_tree( $pid ) {
    if ( is_page() ) {
        return ( get_the_ID() == $pid || in_array( $pid, get_post_ancestors( get_the_ID() ) ) );
    }

    return false;
}
0 голосов
/ 10 февраля 2011

Это работает:

function is_tree( $pid ) {
global $post;         // load details about this page
if ( is_page() ) {
    return ( $post->ID == $pid || in_array( $pid, get_post_ancestors( $post->ID ) ) );
}

return false;

};

...