Função para retornar true se a página atual tiver páginas filhas

8

Estou tentando criar uma função simples para fazer um "teste de status". O objetivo é testar e ver se a página atual que está sendo visualizada tem páginas filhas ou não. Usando isso para alterar o layout para acomodar páginas filhas. O código a seguir parece que deve funcionar, mas, infelizmente, não há dados.

Alguém vê o que me falta?

function is_subpage() {
global $post;                              // load details about this page

if ( is_page() && $post->post_parent ) {   // test to see if the page has a parent
    return true;                                            // return true, confirming there is a parent

} else {                                   // there is no parent so ...
    return false;                          // ... the answer to the question is false
}

}

    
por Brian 07.12.2011 / 01:44

2 respostas

11

Sua função acima testa se uma página é uma página filha de alguma outra página, não se ela tem filhos.

Você pode testar os filhos da página atual da seguinte forma:

function has_children() {
    global $post;

    $children = get_pages( array( 'child_of' => $post->ID ) );
    if( count( $children ) == 0 ) {
        return false;
    } else {
        return true;
    }
}

Leitura adicional:

por Johannes Pille 07.12.2011 / 02:08
7

Aqui está a versão de qualquer tipo de postagem, caso você esteja usando um tipo de postagem personalizado

function has_children($post_ID = null) {
    if ($post_ID === null) {
        global $post;
        $post_ID = $post->ID;
    }
    $query = new WP_Query(array('post_parent' => $post_ID, 'post_type' => 'any'));

    return $query->have_posts();
}
    
por Dmitry Chuba 12.05.2016 / 20:18