यदि माता-पिता पृष्ठ, यदि बच्चे हैं, यदि पोते हैं, तो उनके लिए एक चेक


10

मेरे पास एक डिफ़ॉल्ट पेज टेम्प्लेट है जिसे मैं दो परिदृश्यों के लिए उपयोग करना चाहता हूं। मैं अपने ग्राहक के लिए सादगी के लिए केवल एक पृष्ठ टेम्पलेट का उपयोग करना चाहता हूं।

यहाँ मैं पूरा करने की कोशिश कर रहा हूँ:

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
}

क्या यह संभव है?

यह वही है जो मैंने अब तक कोशिश की है:

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

यह शीर्ष स्तर के पृष्ठों पर अब तक काम करता है, यह पूर्ण-चौड़ाई-लेआउट प्रदर्शित करता है। लेकिन, मैं यह सुनिश्चित करने के लिए क्या कर सकता हूं कि साइडबार-मेनू-लेआउट केवल बच्चों के साथ और दादा-दादी के पन्नों पर बाल-पृष्ठों पर प्रदर्शित किया जाता है? और पूर्ण-चौड़ाई-लेआउट प्रदर्शित करने के लिए, बिना बच्चों वाले बाल-पृष्ठों के लिए।

अग्रिम में धन्यवाद। मुझे यकीन है कि इसका एक सरल समाधान है, मैं अभी भी WP के लिए अपेक्षाकृत नया हूं इसलिए अभी भी यह पता लगाने की कोशिश कर रहा हूं कि क्या किया जा सकता है और क्या नहीं।

जवाबों:


7

Bravokeyl द्वारा प्रदान किए गए समाधान को पढ़ने से पहले, मैंने परीक्षण और त्रुटि के माध्यम से, मेरे लिए काम किया एक समाधान के साथ आया। मुझे यकीन नहीं है कि दोनों में से कौन बेहतर है, या सबसे सही है, मैं केवल यह जानता हूं कि मेरा काम मेरे लिए था, मेरे लिए समस्या थी।

यह वह कोड है जिसका मैंने पूर्ण-चौड़ाई लेआउट या साइडबार-मेनू लेआउट प्रदर्शित करने के लिए उपयोग किया है:

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

जाँचें कि क्या पृष्ठ शीर्ष स्तर का पृष्ठ है (इसमें बच्चे हो सकते हैं या नहीं)?

$post->$post_parent == 0या खाली get_post_ancestors( $post )रिटर्न केवल स्तर -० पृष्ठ है।

क्या चाइल्ड पेज है और केवल लेवल -1 पेज या लेवलनोथेर -1 है?

$post->$post_parent > 0या खाली नहीं है get_post_ancestors( $post )और खाली हैget_post_ancestors( $post->post_parent )

क्या लेवल -1 पेज है, लेकिन बच्चों को लेवलेंट -1 पेज पसंद नहीं है?

$post->$post_parent > 0या खाली नहीं है get_post_ancestors( $post )और खाली है get_post_ancestors( $post->post_parent ) और count(get_children( $post ->ID, 'ARRAY_A' )) == 0।।

मैंने अभी तक इसकी जाँच नहीं की थी..लेकिन इसे ठीक काम करना चाहिए। आप get_page_children () और get_posts () के साथ भी खेल सकते हैं


धन्यवाद bravokeyl उस समाधान ने मेरे लिए काम किया। बहुत सारे परीक्षण और त्रुटि (मुख्य रूप से त्रुटि के बाद) मैं अपना जवाब पढ़ने से पहले आज अपने स्वयं के समाधान के साथ आया था। मैं उसे नीचे पोस्ट करूँगा।
laura.f

महान! आप समाधान मिल गया है।
bravokeyl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.