Controllare se è una pagina genitore, se ha figli o nipoti
Ho un template di pagina predefinito che vorrei utilizzare per due scenari diversi. Preferirei utilizzare un solo template di pagina per mantenere la semplicità per il mio cliente.
Ecco cosa sto cercando di realizzare:
if pagina_genitore O se pagina_figlia senza figli {
mostra layout_larghezza_piena
}
if pagina_figlia con figli o se pagina_nipote {
mostra layout_menu_laterale
}
È possibile?
Questo è quello che ho provato finora:
if( is_page() && $post->post_parent > 0 ) {
//mostra layout_menu_laterale
} else {
//mostra layout_larghezza_piena
}
Funziona finora per le pagine di primo livello, dove viene visualizzato il layout a larghezza piena. Ma come posso fare per assicurarmi che il layout con menu laterale venga visualizzato solo nelle pagine figlie che hanno figli e nelle pagine nipoti? E per le pagine figlie senza figli, mostrare il layout a larghezza piena?
Grazie in anticipo. Sono sicuro che ci sia una soluzione semplice, sono solo relativamente nuovo in WordPress quindi sto ancora cercando di capire cosa si può e non si può fare.

Prima di leggere la soluzione proposta da Bravokeyl, dopo vari tentativi ed errori, ero finalmente riuscito a trovare una soluzione che funzionasse per il mio caso. Non so dire quale delle due sia migliore o più corretta, so solo che la mia ha funzionato per il problema che avevo.
Questo è il codice che ho utilizzato per mostrare un layout a tutta larghezza o con sidebar-menu:
if( is_page() && $post->post_parent > 0 ) {
// il post ha genitori
$children = get_pages('child_of='.$post->ID);
if( count( $children ) != 0 ) {
// mostra layout con sidebar-menu
}
$parent = get_post_ancestors($post->ID);
if( count( $children ) <= 0 && empty($parent[1]) ) {
// mostra layout a tutta larghezza
} elseif ( count( $children ) <= 0 && !empty($parent[1]) ) {
// mostra layout con sidebar-menu
}
} else {
// il post non ha genitori
// mostra layout a tutta larghezza
}

Livello-0
--Livello-1
----Livello-2
------Livello-3
----Livelloaltro-2
--Livelloaltro-1
verificare se la pagina è una pagina di livello superiore (può avere figli o meno)?
$post->$post_parent == 0
o è vuoto get_post_ancestors( $post )
restituisce solo pagine di Livello-0.
È una pagina figlia ed è una pagina di Livello-1 o Livelloaltro-1 solamente?
$post->$post_parent > 0
o non è vuoto get_post_ancestors( $post )
ed è vuoto get_post_ancestors( $post->post_parent )
È una pagina level-1 ma non ha figli come la pagina Livelloaltro-1?
$post->$post_parent > 0
o non è vuoto get_post_ancestors( $post )
ed è vuoto get_post_ancestors( $post->post_parent )
e count(get_children( $post ->ID, 'ARRAY_A' )) == 0
..
Non ho ancora verificato questo..ma dovrebbe funzionare bene. Puoi anche giocare con get_page_children() e get_posts()
