खोज…


पैरामीटर

पैरामीटर व्याख्या
$template फ़िल्टर के लिए एक पैरामीटर पास करता है, $template पोस्ट प्रकार के लिए उपयुक्त फ़ाइल का वर्तमान पथ है जैसा कि सक्रिय चाइल्ड थीम या पैरेंट थीम में पाया जाता है (यदि कोई बच्चा थीम नहीं है या चाइल्ड थीम में निम्न रैंक के टेम्पलेट हैं। वर्डप्रेस टेम्पलेट पदानुक्रम देखें। अधिक जानकारी के लिए)।

टिप्पणियों

यदि आप संशोधित नहीं कर रहे हैं तो भी आपको $template वापस करना होगा। यदि यह आपको भ्रमित करता है, तो उन उदाहरणों को देखें जहां कोड में apply_filter() का उपयोग किया गया है

आपको बाद में उपयोग के लिए यहां चर नहीं स्थापित करने चाहिए, इसके लिए बेहतर हुक हैं।

इस फिल्टर के लिए एक उपयोगी कार्यक्रम प्रवाह है:

  1. चेक $template में हमारे कस्टम पोस्ट प्रकार का नाम शामिल है -> टेम्पलेट पदानुक्रम !!
  2. यदि नहीं, तो उपयुक्त फ़ाइलों के लिए हमारे प्लगइन को खोजें -> फ़ाइलों के लिए फ़ोल्डर्स के माध्यम से खोजने के बजाय विशिष्ट फ़ाइलों को इंगित करना बेहतर है। अधिक कुशल। लेकिन पूरी तरह से डेवलपर तक।
  3. टेम्पलेट वापस करें।

सरल उदाहरण है

यह फ़िल्टर बहुत उपयोगी है। डेवलपर्स के लिए आम समस्याओं में से एक यह है कि वे अपने द्वारा विकसित किए गए प्लग इन में टेम्प्लेट कैसे शामिल करें।

फ़िल्टर को तब लागू किया जाता है जब वर्डप्रेस सक्रिय बच्चे / अभिभावक विषय में उपयुक्त टेम्पलेट wp पदानुक्रम का उपयोग करके पता लगाता है।

जब आप टेम्पलेट पथ को संशोधित करना चाहते हैं तो परिभाषित करने के लिए सावधान रहें। नीचे दिए गए उदाहरण में, कोड यह देखने के लिए जांचता है कि क्या वर्तमान पृष्ठ हमारे कस्टम पोस्ट प्रकार के cpt का एकल दृश्य है।

शुरू करने के लिए सरल पर्याप्त उदाहरण!

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    //change a single post template...
    
    if( is_singular('cpt')  ){
         $template= 'path/to/another/template_file';
    }
      
    
    return $template;

}

अधिक सामान्य उदाहरण

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    /*
    *     This example is a little more advanced. 
    *    It will check to see if $template contains our post-type in the path.
    *    If it does, the theme contains a high level template e.g. single-cpt.php
    *    If not we look in the plugin parent folder for the file. e.g. single-cpt.php
    */
    
  
    //check to see if the post type is in the filename (high priority file)
    //return template if it is!
    
    global $post;
   
    if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){
        return $template;
    }
    
    $plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here...
    
    if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php')   ){
         $template= $plugin_path.'/single-'.$post->post_type.'.php';
    } elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) {
         $template= $plugin_path.'/archive-'.$post->post_type.'.php';
    } 
      
    return $template;
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow