Función para retornar verdadero si la página actual tiene páginas hijas

7 dic 2011, 02:44:33
Vistas: 19K
Votos: 10

Estoy intentando crear una función simple para hacer una "prueba de estado". El objetivo es comprobar si la página actual que se está viendo tiene páginas hijas o no. Uso esto para modificar el diseño y acomodar las páginas hijas. El siguiente código parece que debería funcionar, pero por desgracia no lo hace.

¿Alguien ve lo que me falta?

function is_subpage() {
global $post;                              // cargar detalles sobre esta página

if ( is_page() && $post->post_parent ) {  // comprobar si la página tiene un padre
    return true;                          // retornar verdadero, confirmando que hay un padre

} else {                                  // no hay padre así que...
    return false;                         // ...la respuesta a la pregunta es falso
}

}

0
Todas las respuestas a la pregunta 2
0
15

Tu función anterior prueba si una página es una página hija de alguna otra página, no si tiene hijos.

Puedes verificar si la página actual tiene hijos 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;
    }
}

Lecturas adicionales:

7 dic 2011 03:08:07
0
10

Aquí está la versión para cualquier tipo de publicación, en caso de que estés 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();
}
12 may 2016 21:18:00