Fonction pour retourner vrai si la page actuelle a des pages enfants

8

J'essaie de créer une fonction simple pour faire un "test d'état". L'objectif est de tester et de voir si la page en cours de visualisation a des pages enfants ou non. Cette option permet de modifier la mise en page pour accueillir les pages enfants. Le code suivant semble fonctionner, mais hélas, pas de dés.

Quelqu'un voit ce qui me manque?

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
la source

Réponses:

14

Votre fonction ci-dessus teste si une page est une page enfant d'une autre page, pas si elle a des enfants.

Vous pouvez tester les enfants de la page actuelle comme ceci:

function has_children() {
    global $post;

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

Lectures complémentaires:

Johannes Pille
la source
8

Voici la version pour tout type de publication, si vous utilisez un type de publication personnalisé

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
la source