Función para devolver verdadero si la página actual tiene páginas secundarias

8

Estoy tratando de crear una función simple para hacer una "prueba de estado". El objetivo es probar y ver si la página actual que se está viendo tiene páginas secundarias o no. Usar esto para alterar el diseño para acomodar páginas secundarias. Parece que el siguiente código debería funcionar, pero, por desgracia, no hay dados.

Alguien ve lo que me estoy perdiendo?

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
}

}

Brian
fuente

Respuestas:

14

La función anterior prueba si una página es una página secundaria de otra página, no si tiene elementos secundarios.

Puede probar para los niños de la página actual de la siguiente manera:

function has_children() {
    global $post;

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

Otras lecturas:

Johannes Pille
fuente
8

Aquí hay una versión para cualquier tipo de publicación, en caso de que esté utilizando un tipo de publicación 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();
}
Dmitry Chuba
fuente