web-dev-qa-db-fra.com

Fonction pour renvoyer true si la page en cours a des pages enfants

J'essaie de créer une fonction simple pour faire un "test de statut". L'objectif est de tester et de voir si la page en cours d'affichage contient des pages enfants ou non. En l'utilisant pour 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 que je 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
}

}

8
Brian

Votre fonction ci-dessus teste si une page est une page enfant d’une autre page et non pas si elle a des enfants.

Vous pouvez tester pour les enfants de la page en cours de la manière suivante:

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:

12
Johannes Pille

Voici la version pour tout type de message, au cas où vous utilisez un type de message 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();
}
7
Dmitry Chuba