Verificar si es página padre, si tiene hijos o si tiene nietos
Tengo una plantilla de página predeterminada que deseo usar para dos escenarios. Preferiría usar solo una plantilla de página por simplicidad para mi cliente.
Esto es lo que intento lograr:
si es página_padre O si es página_hija sin hijos {
mostrar diseño_ancho_completo
}
si es página_hija con hijos o si es página_nieta {
mostrar diseño_con_menú_lateral
}
¿Es esto posible?
Esto es lo que he intentado hasta ahora:
if( is_page() && $post->post_parent > 0 ) {
//mostrar diseño_con_menú_lateral
} else {
//mostrar diseño_ancho_completo
}
Funciona hasta ahora para las páginas de nivel superior, mostrando diseños de ancho completo. Pero, ¿qué puedo hacer para asegurarme de que el diseño con menú lateral se muestre solo en páginas hijas con hijos y en páginas nietas? Y para las páginas hijas sin hijos, mostrar el diseño de ancho completo.
Gracias de antemano. Estoy seguro de que tiene una solución simple, solo que soy relativamente nuevo en WordPress, así que todavía estoy tratando de descubrir qué se puede y qué no se puede hacer.

Antes de leer la solución proporcionada por Bravokeyl, finalmente, a través de prueba y error, llegué a una solución que funcionó para mí. No estoy seguro de cuál de las dos es mejor o más correcta, solo sé que la mía funcionó para mi problema específico.
Este es el código que utilicé para mostrar un diseño de ancho completo o un diseño con menú lateral:
if( is_page() && $post->post_parent > 0 ) {
// el post tiene padres
$children = get_pages('child_of='.$post->ID);
if( count( $children ) != 0 ) {
// mostrar diseño con menú lateral
}
$parent = get_post_ancestors($post->ID);
if( count( $children ) <= 0 && empty($parent[1]) ) {
// mostrar diseño de ancho completo
} elseif ( count( $children ) <= 0 && !empty($parent[1]) ) {
// mostrar diseño con menú lateral
}
} else {
// el post no tiene padres
// mostrar diseño de ancho completo
}

Level-0
--Level-1
----Level-2
------Level-3
----Levelanother-2
--Levelanother-1
¿Cómo verificar si una página es de nivel superior (puede tener hijos o no)?
$post->post_parent == 0
o está vacío get_post_ancestors( $post )
retorna solo páginas Level-0.
¿Es una página hija y es solo una página Level-1 o Levelanother-1?
$post->post_parent > 0
o no está vacío get_post_ancestors( $post )
y está vacío get_post_ancestors( $post->post_parent )
¿Es una página level-1 pero no tiene hijos como la página Levelanother-1?
$post->post_parent > 0
o no está vacío get_post_ancestors( $post )
y está vacío get_post_ancestors( $post->post_parent )
y count(get_children( $post->ID, 'ARRAY_A' )) == 0
..
No he probado esto todavía..pero debería funcionar bien. También puedes jugar con get_page_children() y get_posts()

Gracias bravokeyl. Esa solución funcionó para mí. Después de muchos intentos y errores (principalmente errores) llegué a una solución propia hoy mismo antes de leer tu respuesta. La publicaré a continuación.
