2012-11-26 28 views
5

क्या व्यवस्थापक में टेम्पलेट फ़ाइल छिपाने का कोई तरीका है?वर्डप्रेस में टेम्पलेट कैसे छिपाना है?

उदाहरण के लिए मेरे पास एक टेम्पलेट है जो केवल एक विशिष्ट प्लगइन स्थापित होने पर ही उपलब्ध होना चाहिए, और मुझे पहले से ही पता है कि प्लगइन सक्रिय है या नहीं। लेकिन मैं टेम्पलेट कैसे छिपा सकता हूं?

उदाहरण के लिए मैं "ब्लॉगर पुनर्निर्देशन" -template bellow छुपाना चाहते हैं:

Image is just an example...

मैं पाया है कई लिंक है, लेकिन समाधान के सभी बहिष्कृत लगता है।

संपादित करें:अगर कोई में मैं कैसे की जाँच करता है, तो pluin सक्रिय है रुचि मैं निम्नलिखित समारोह के साथ यह करना है:

function isPluginActive($plugin){ 
     if (in_array($plugin, apply_filters('active_plugins', get_option('active_plugins')))) 
     { 
      return true; 
     } 
     return false; 
    } 
+0

का आनंद आप कह रहे हैं आप व्यवस्थापक अगर वह सही प्लगइन नहीं है सूचीबद्ध टेम्पलेट देखने के लिए नहीं करना चाहते हैं? – MrGlass

+0

@MrGlass हाँ! ठीक ठीक। यदि कोई प्लगइन स्थापित नहीं है और उस टेम्पलेट को इसकी आवश्यकता है। आइए मान लें कि मेरे पास एक टेम्पलेट है जो उन्नत कस्टम फ़ील्ड्स प्लगइन का उपयोग करता है, और यह स्थापित नहीं है तो उस टेम्पलेट फ़ाइल को एक विकल्प नहीं होना चाहिए। – jamietelin

+0

मुझे लगता है कि यह संभव नहीं है। आपके कोड को चुनने के बिना आपको अपना कोड (कोड टेम्पलेट छुपाने के लिए) चलाने की आवश्यकता होगी (क्योंकि यहां अवधारणा यह है कि वे टेम्पलेट का उपयोग नहीं कर सकते हैं)। – MrGlass

उत्तर

12

अपडेट - सावधानी के एक शब्द के रूप में नीचे टिप्पणी में एंड्रयू द्वारा ने कहा:

सावधानी के साथ इस कोड का प्रयोग करें, तो आप यह है कि आप चयन से हटा टेम्पलेट का उपयोग कर किसी भी पृष्ठ हों, अद्यतन करने पेज यह डिफ़ॉल्ट टेम्पलेट


मैं सुनिश्चित नहीं हूं पर वापस लौटने की अगर कोई ऐसा करने का एक PHP तरीका है कारण होगा - आप WP_Theme कक्षा में देखने के लिए होगा, लेकिन मेरी सबसे पहले यह संभव नहीं हो सकता है क्योंकि सभी टेम्पलेट्स प्राप्त करने के लिए, कक्षा scandir() नामक एक आंतरिक फ़ंक्शन का उपयोग करती है जो वर्तमान थीम निर्देशिका स्कैन करती है और वहां से सभी .php फ़ाइलों को प्राप्त करती है। इसके बाद यह संबंधित Template Name: पहचानकर्ता की तलाश करता है और यदि यह मौजूद है तो यह टेम्पलेट सूची में जोड़ा जाता है।

तो इसके बजाय मैं सुझाव देता हूं कि आप एक छोटा जेएस जोड़ दें जो पृष्ठ टेम्पलेट चयन से इस विकल्प को हटा देगा। कोड स्निपेट है:

function my_remove_page_template() { 
    global $pagenow; 
    if (in_array($pagenow, array('post-new.php', 'post.php')) && get_post_type() == 'page') { ?> 
     <script type="text/javascript"> 
      (function($){ 
       $(document).ready(function(){ 
        $('#page_template option[value="sidebar-page.php"]').remove(); 
       }) 
      })(jQuery) 
     </script> 
    <?php 
    } 
} 
add_action('admin_footer', 'my_remove_page_template', 10); 

यह ड्रॉप-डाउन से टेम्पलेट sidebar-page.php निकाल देंगे। सशर्त हैं ताकि स्क्रिप्ट केवल पृष्ठों के स्क्रीन जोड़ने और संपादित करने पर जोड़ा जा सके।

अपने मामले को समायोजित करें और :)

+2

+1 यह सुनिश्चित करने के लिए कि स्क्रिप्ट शामिल है केवल स्क्रीन जोड़ें और संपादित करें। – Sudar

+2

+1 यह बताने के लिए कि कैसे टेम्पलेट फ़ाइलों के लिए WP जांचता है। – jamietelin

+2

सावधानी के साथ इस कोड का उपयोग करें, यदि आपके पास चयन से हटाए गए टेम्पलेट का उपयोग करने वाले कोई भी पृष्ठ हैं, तो पृष्ठ को अपडेट करने से यह डिफ़ॉल्ट टेम्पलेट पर वापस आ जाएगा – andrew

4

वर्डप्रेस किसी भी हुक प्रदान नहीं करता है, तो आप नहीं कर सकते इसे PHP से हटा दें।

एक विकल्प जिसे मैं सोच सकता था यह है कि आप इसे जावास्क्रिप्ट का उपयोग करके गतिशील रूप से हटा सकते हैं। add post पृष्ठ में जावास्क्रिप्ट का एक स्निपेट शामिल करें जो select तत्व से विकल्प को हटा देगा।

मुझे पता है कि यह एक साफ समाधान नहीं है, लेकिन मुझे लगता है कि यह अभी तक एकमात्र संभव तरीका है।

संपादित:

एक अन्य विकल्प जब प्लगइन सक्रिय होता है विषय निर्देशिका के लिए टेम्पलेट फ़ाइल को कॉपी करें और जब प्लगइन निष्क्रिय है टेम्पलेट फ़ाइल को निकालने के लिए है।

यह मानता है कि टेम्पलेट केवल इस प्लगइन द्वारा उपयोग किया जाता है।

+0

मैं सहमत हूं, क्योंकि अब यह एकमात्र विकल्प हो सकता है। – bodi0

+0

मैं देखता हूं। मुझे डर था कि यह मामला था। एक जेएस हैक का मानना ​​है कि काम करना होगा। ;) – jamietelin

+1

आप मेरे उत्तर में पोस्ट किए गए दूसरे विकल्प को भी आजमा सकते हैं। – Sudar

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^