Funzione per restituire vero se la pagina corrente ha pagine secondarie


8

Sto cercando di creare una semplice funzione per fare un "test di stato". L'obiettivo è testare e vedere se la pagina corrente visualizzata ha pagine secondarie o meno. Usando questo per modificare il layout per accogliere le pagine secondarie. Il seguente codice sembra che dovrebbe funzionare, ma purtroppo, nessun dado.

Qualcuno vede cosa mi manca?

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
}

}

Risposte:


14

La tua funzione sopra verifica se una pagina è una pagina figlio di un'altra pagina, non se ha figli.

Puoi testare i figli della pagina corrente in questo modo:

function has_children() {
    global $post;

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

Ulteriori letture:


8

Ecco la versione per qualsiasi tipo di post, nel caso in cui si stia utilizzando un tipo di post personalizzato

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();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.