2012-12-17 9 views
17

क्या यह जांचना संभव है कि कोई पृष्ठ अभिभावक है या यह बच्चा पृष्ठ है या नहीं?जांचें कि कोई पृष्ठ अभिभावक है या यह बच्चा पृष्ठ है या नहीं?

- जनक

---- बाल पेज 1

---- बाल पेज 2

आदि

:

मुझे अपने पृष्ठों को इस तरह निर्धारित किया है अप

मैं एक निश्चित मेनू दिखाना चाहता हूं यदि यह एक मूल पृष्ठ है और यदि यह पृष्ठ पर है तो एक अलग मेनू।

मुझे पता है कि मैं नीचे कुछ ऐसा कर सकता हूं लेकिन मैं इसे विशिष्ट पृष्ठ आईडी के बिना थोड़ा अधिक गतिशील बनाना चाहता हूं।

<?php 
if ($post->post_parent == '100') { // if current page is child of page with page ID 100 
    // show image X 
} 
?> 
+0

फिर आप 'पैरेंट' की पहचान कैसे करना चाहते हैं? – Alex

+0

@alexjamesbrown 'is_parent'/'is_child' जैसी कुछ करने का कोई तरीका है? – Rob

+0

आप माता-पिता को क्या कहते हैं? क्या आप बच्चे को माता-पिता में शामिल करते हैं? या क्या आपके पास कोई अन्य प्रकार का रिश्ता है? क्या यह केवल एक निर्देशिका संरचना है? – cheesemacfly

उत्तर

39

अगर पोस्ट को इस प्रकार एक उपपृष्ठ है आप परीक्षण कर सकते हैं:
* (http://codex.wordpress.org/Conditional_Tags से) *

<?php 

global $post;  // if outside the loop 

if (is_page() && $post->post_parent) { 
    // This is a subpage 

} else { 
    // This is not a subpage 
} 
?> 
+3

यह क्यों काम करता है - '$ post-> post_parent' में अभिभावक पोस्ट आईडी (डिफ़ॉल्ट 0) के साथ पूर्णांक होता है - डिफ़ॉल्ट मान का कोई अभिभावक नहीं है। स्थिति में '0' का मूल्यांकन ** FALSE ** के रूप में किया जाता है, अन्य संख्याओं (> 0) का मूल्यांकन ** सत्य ** के रूप में किया जाता है। –

3

अपने विषय के functions.php फ़ाइल में इस समारोह रखो।

function is_page_child($pid) {// $pid = The ID of the page we're looking for pages underneath 
    global $post;   // load details about this page 
    $anc = get_post_ancestors($post->ID); 
    foreach($anc as $ancestor) { 
     if(is_page() && $ancestor == $pid) { 
      return true; 
     } 
    } 
    if(is_page()&&(is_page($pid))) 
    return true; // we're at the page or at a sub page 
    else 
     return false; // we're elsewhere 
}; 

तो आप इसका इस्तेमाल कर सकते हैं:

<?php 
    if(is_page_child(100)) { 
     // show image X 
    } 
?> 
+0

"get_post_ancestors" का उपयोग करने के साथ आप स्तर 1 पोस्ट-आईडी के लिए भी भव्य बच्चों के पृष्ठों की जांच कर सकते हैं - इससे मुझे अध्याय-शरीर कक्षाएं बनाने और विभिन्न स्तर 1 माता-पिता/भव्य माता-पिता के लिए विभिन्न सीएसएस रंग रखने में मदद मिली! –

+0

'' ' फ़ंक्शन थीमनाम_body_class ($ कक्षाएं) { $ classNames = array(); $ पोस्ट = get_post(); $ माता-पिता = get_post_ancestors ($ पोस्ट); $ माता-पिता [] = $ पोस्ट-> आईडी; अगर (!खाली ($ माता-पिता)) { foreach ($ माता-पिता $ parentID के रूप में $) { अगर ($ parentID === 8) { $ classNames [] = 'my-special-className'; } यदि ($ parentID === 11) { $ classNames [] = 'my-other-special-className'; } } } // echo var_dump ($ कक्षाएं); वापसी array_merge ($ कक्षाएं, $ वर्ग नाम); } add_filter ('body_class', 'themeName_body_class'); '' ' –

2

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं यह एक ही प्रश्न के लिए खोज रहा था और जब तक मैं के साथ आया एक स्पष्ट और सरल जवाब नहीं मिल सकता है यह वाला। मेरा जवाब उसकी व्याख्या का जवाब नहीं देता है लेकिन यह मुख्य प्रश्न का उत्तर देता है जो मैं खोज रहा था।

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

<?php 
    global $post;  
    $children = get_pages(array('child_of' => $post->ID)); 
    if (is_page() && ($post->post_parent || count($children) > 0 )) : 
?> 
संबंधित मुद्दे