Un chequeo para ver si es la página de los padres, si tiene hijos, si tiene nietos

9

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 estoy tratando de lograr:

if parent_page OR if child-page without children {
  display full-width-layout
}
if child page with children or if grandchild page {
  display sidebar-menu-layout
}

¿Es esto posible?

Esto es lo que he intentado hasta ahora:

if( is_page() && $post->post_parent > 0 ) {
  //display sidebar-menu-layout
} else {
  //display full-width-layout
}

Funciona tanto como en las páginas de nivel superior, muestra diseños de ancho completo. Pero, ¿qué puedo hacer para asegurarme de que el diseño del menú de la barra lateral se muestre en las páginas secundarias con niños y solo en las páginas de Grandchile? Y para páginas secundarias sin hijos, para mostrar el diseño de ancho completo.

Gracias de antemano. Estoy seguro de que tiene una solución simple, simplemente soy relativamente nuevo en WP, así que todavía estoy tratando de averiguar qué se puede y qué no se puede hacer.

    
pregunta laura.f 23.03.2015 - 17:04

2 respuestas

6

Antes de leer la solución que proporcionó Bravokeyl, finalmente, a través de prueba y error, encontré una solución que funcionó para mí. No estoy seguro de cuál es la mejor de las dos, o la más correcta, solo sé que la mía funcionó para mí, por el problema que tuve.

Este es el código que utilicé para mostrar el diseño de ancho completo o el diseño del menú de la barra lateral:

if( is_page() && $post->post_parent > 0 ) { 
  // post has parents

  $children = get_pages('child_of='.$post->ID);
  if( count( $children ) != 0 ) {
    // display sidebar-menu layout
  }

  $parent = get_post_ancestors($post->ID);
  if( count( $children ) <= 0  && empty($parent[1]) ) {
    // display full-width layout
  } elseif ( count( $children ) <= 0  && !empty($parent[1]) )  {
    // display sidebar-menu layout
  }

} else {
  // post has no parents
  // display full-width layout
}
    
respondido por el laura.f 25.03.2015 - 22:12
4
Level-0
--Level-1
----Level-2
------Level-3
----Levelanother-2
--Levelanother-1

compruebe si la página es la página de nivel superior (puede tener hijos o no)?

$post->$post_parent == 0 o está vacío get_post_ancestors( $post ) devuelve solo las páginas de nivel 0

¿Es una página secundaria y solo una página de Nivel 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 la página del nivel 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 comprobado esto todavía ... pero debería funcionar bien. También puedes jugar con get_page_children () y get_posts ()

    
respondido por el bravokeyl 23.03.2015 - 21:16

Lea otras preguntas en las etiquetas