जाँच करें कि क्या वर्तमान श्रेणी में बच्चे हैं


11

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

function category_has_children() {
global $wpdb;   
$term = get_queried_object();
$category_children_check = $wpdb->get_results(" SELECT * FROM wp_term_taxonomy WHERE parent = '$term->term_id' ");
    if ($category_children_check) {
        return true;
    } else {
       return false;
    }
}   

<?php
    if (!category_has_children()) {
        //use whatever loop or template part here to show the posts at the end of the line
   get_template_part('loop', 'index'); 
       }   

    else {
       // show your category index page here
    }
?>

जवाबों:


11

ऐसा करने के लिए एक बेहतर तरीका हो सकता है या नहीं भी हो सकता है, लेकिन यहां बताया गया है कि मैं यह कैसे करूंगा:

$term = get_queried_object();

$children = get_terms( $term->taxonomy, array(
'parent'    => $term->term_id,
'hide_empty' => false
) );
// print_r($children); // uncomment to examine for debugging
if($children) { // get_terms will return false if tax does not exist or term wasn't found.
    // term has children
}

यदि वर्तमान टैक्सोनॉमी शब्द में बच्चे हैं तो get_termsफ़ंक्शन एक सरणी लौटाएगा, अन्यथा यह वापस आ जाएगा false

परीक्षण किया गया और सीपीटी पीढ़ी के लिए उपयोग किए जाने वाले कस्टम पोस्ट टाइप यूआई प्लगइन के साथ मेरे स्थानीय वेनिला इंस्टॉल पर काम करता है ।


जब मैंने Print_r ($ बच्चे) को अनसुना कर दिया .... तो यह एक अरै का आउटपुट था। कैसे एक में बदल दिया जा सकता है / अन्यथा? क्षमा करें, मैं अभी भी बहुत नया हूँ php
user29489

1
अवहेलना मैंने इसका इस्तेमाल किया: अगर ($ बच्चे) {गूंज 'चिल्ड्रन हियर'; } और {गूंज 'नहीं बच्चे'; }
user29489

@ user29489 आप सही हैं, मैं अपने उत्तर में पर्याप्त स्पष्ट नहीं था। भविष्य के संदर्भ के लिए संपादित।
montrealist

1
उन लोगों के लिए जिन्हें बस यह जानना है कि क्या कोई बच्चे हैं और उन्हें बच्चे की शर्तों के लिए डेटा प्राप्त करने की आवश्यकता नहीं है, मेरा सुझाव है कि 'field' => 'count'बच्चों की संख्या को गिनने के लिए।
जेडी

क्या यह सामान्य पोस्ट श्रेणियों के साथ भी काम करता है?
पीट

9

Get_term_children के माध्यम से ऐसा करने के लिए एक सामान्य WP संभावना भी है ।

<?php
$children = get_term_children($termId, $taxonomyName);

if( empty( $children ) ) {
    //do something here
}

1

यह मानते हुए कि आप अपनी शर्तों को केवल उन शब्दों को दिखाने के लिए फ़िल्टर करने का प्रयास कर रहे हैं जिनमें या तो बच्चे हैं या नहीं, आप वास्तव childlessमें अपने get_terms()फ़ंक्शन में पैरामीटर का उपयोग कर सकते हैं ।

$children = get_terms( 
    'taxonomy' => '$taxonomy_slug',
    'hide_empty' => false,
    'childless' => true
  ) 
);

यह उन शब्दों की एक सरणी का उत्पादन करेगा जिसमें बच्चे नहीं हैं।

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