Ana sayfa, eğer çocuk varsa, torun varsa kontrol


10

İki senaryo için kullanmak istediğim bir varsayılan sayfa şablonum var. Müşterim için basitlik adına yalnızca bir sayfa şablonu kullanmayı tercih ederim.

İşte yapmaya çalıştığım şey:

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
}

Mümkün mü?

Şimdiye kadar denedim:

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

Üst düzey sayfalarda olduğu gibi çalışır, tam genişlik düzenlerini görüntüler. Ancak, kenar çubuğu menü düzeninin çocuklu alt sayfalarda ve yalnızca torun sayfalarında görüntülendiğinden emin olmak için ne yapabilirim? Çocuksuz alt sayfalar için, tam genişlik düzenini görüntülemek.

Şimdiden teşekkürler. Eminim basit bir çözümü vardır, WP için nispeten yeniyim, bu yüzden hala neler yapılabileceğini ve yapamayacağını anlamaya çalışıyorum.

Yanıtlar:


7

Sonunda, deneme yanılma yoluyla benim için işe yarayan bir çözüm bulduğumdan, Bravokeyl çözümünü okumadan önce. Hangisinin hangisinin daha iyi olduğuna emin değilim, ya da en doğrusu, benimkinin benim için, sorunum için çalıştığını biliyorum.

Tam genişlik düzenini veya kenar çubuğu menü düzenini görüntülemek için kullandığım kod:

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
}

4
Level-0
--Level-1
----Level-2
------Level-3
----Levelanother-2
--Levelanother-1

sayfanın üst düzey sayfa olup olmadığını kontrol edin (çocuk sahibi olabilir veya olmayabilir)?

$post->$post_parent == 0veya boş get_post_ancestors( $post )ise yalnızca Seviye-0 Sayfalarını döndürür.

Alt sayfa mı ve yalnızca 1. Seviye sayfa mı yoksa yalnızca Levelanother-1 mi?

$post->$post_parent > 0veya boş değil get_post_ancestors( $post )ve boşget_post_ancestors( $post->post_parent )

Seviye 1 sayfası mı, ancak Levelanother-1 sayfası gibi çocukları yok mu?

$post->$post_parent > 0veya boş değil get_post_ancestors( $post )ve boş get_post_ancestors( $post->post_parent ) ve count(get_children( $post ->ID, 'ARRAY_A' )) == 0..

Bu henüz kontrol etmedi ... ama iyi çalışması gerekir. Ayrıca get_page_children () ve get_posts () ile oynayabilirsiniz


Teşekkürler bravokeyl. Bu çözüm benim için çalıştı. Birçok deneme yanılma işleminden sonra (çoğunlukla hata) Cevabınızı okumadan önce bugün kendi çözümümü buldum. Bunu aşağıya göndereceğim.
laura.f

Harika! çözüm buldunuz.
bravokeyl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.