2012-01-24 15 views
7

मैं बीसवीं थीम के लिए एक बच्चे विषय लिखकर नई परियोजनाएं शुरू करता हूं। मैं शायद ही कभी बीसवीं थीम (जैसे पृष्ठभूमि रंग, आदि) में बनाए गए विकल्पों में से किसी एक का उपयोग करने के लिए नई थीम डिज़ाइन करता हूं। उन अवशिष्ट विकल्पों में वास्तव में कुछ भी चोट नहीं पहुंचाता है, लेकिन मैं उनसे छुटकारा पाना चाहता हूं क्योंकि वे कुछ भी नहीं करते हैं।बाल थीम से वर्डप्रेस थीम विकल्पों को कैसे हटाएं

समस्या यह है कि विषय विकल्पों को मूल विषय के functions.php में घोषित किया जाता है, जो कि बच्चे की थीम के functions.php फ़ाइल के साथ (इसके बजाय नहीं) लोड किया जाता है (इसलिए मैं उन्हें हटा सकता हूं लेकिन वे वापस आ जाएंगे अगला अपग्रेड)।

क्या मेरे बच्चे की थीम से उन थीम विकल्पों को हटाने या अक्षम करने का कोई तरीका है? शायद "remove_options()" फ़ंक्शन की रेखाओं के साथ कुछ? या शायद कुछ ऐसा जो उस प्रभाव को प्राप्त करेगा? दूसरे शब्दों में, सवाल यह है कि थीम_ऑप्शन को हटाए गए मूल फ़ंक्शन को हटाने/ओवरराइड करने के बिना हटाया जा सकता है या नहीं।

मुझे यकीन है कि पर्याप्त पटरिंग के साथ, मैं सीएसएस या जावास्क्रिप्ट के साथ विकल्प छुपा सकता हूं ... लेकिन चलो।

उत्तर

12

खुदाई के दूसरे दौर के बाद ...

यह पूरी तरह आसान है!

आप here शुरू करने से मेरे कदमों वापस कर सकते हैं, लेकिन कोड सुंदर आत्म व्याख्यात्मक है:

add_action('init', 'remove_crap'); 
    function remove_crap() { 

    remove_custom_image_header(); 
    remove_custom_background(); 
    remove_theme_support('post-formats'); 
} 

आप इन कोडेक्स में देख सकते हैं। Remove_theme_support कई तारों में से एक लेता है जो विभिन्न विकल्पों की पहचान करता है (केवल प्रारूपों के अलावा)। मुझे सामना करने वाला एकमात्र मुद्दा यह है कि उन्हें एक हुक से बुलाया जाना चाहिए (आप उन्हें केवल functions.php में नहीं छोड़ सकते हैं)। मैं init का उपयोग कर रहा हूं लेकिन शायद एक और है जो अधिक विनियमित है।

एकमात्र चीज जो मुझे अभी भी नहीं पता है, यह है कि उपस्थिति के तहत दिखाई देने वाले "थीम विकल्प" पृष्ठ लिंक को कैसे हटाया जाए। मुझे पता है कि यह add_theme_page() के साथ जोड़ा गया है लेकिन ऐसा लगता है कि remove_theme_page() एक आसान नहीं लगता है।

अपडेट: मुझे यह मिला! यह बहुत खराब प्रलेखित है, लेकिन अंत में यह करने के लिए काफी आसान है:

add_action('admin_init', 'remove_twentyeleven_theme_options', 11); 
    function remove_twentyeleven_theme_options() { 
remove_submenu_page('themes.php', 'theme_options'); 
} 

मेरे उदाहरण में, 'themes.php' लक्ष्य उपस्थिति मेनू और 'theme_options' twentyeleven विषय में इस्तेमाल किया menu_slug है। स्पष्ट रूप से ये पैरामीटर अलग-अलग मेनू या उपमेनू के संपादन के आधार पर भिन्न होंगे। This page आपको सही दिशा में इंगित करेगा।

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

+2

भी संपादित किया है, इन सुझावों में से कोई भी वास्तव में इसे प्राप्त करने के लिए "सही" तरीका नहीं है - remove_ * फ़ंक्शंस सभी को हटाए गए_theme_support के पक्ष में हटा दिया गया है, और init इन कार्यों को कॉल करने में बहुत देर हो चुकी है - होना चाहिए "after_setup_theme" में। "Remove_submenu_page" विकल्प केवल मेनू को छुपाता है, यह वास्तव में समर्थन अक्षम नहीं करता है। ऐसा करने का सही तरीका 10_ (यानी 11 या उससे अधिक) की प्राथमिकता के साथ after_setup_theme कार्रवाई में है, यह सुनिश्चित करने के लिए कि यह बाद के माता-पिता के कॉल के बाद चलता है, बाद में (set parent विषय 10 की डिफ़ॉल्ट प्राथमिकता का उपयोग करता है)। मैं संदर्भ के लिए एक नया जवाब पोस्ट करूंगा। –

+0

इसके लिए धन्यवाद, एसडीपी। मैं सोच रहा था कि क्या आप पूरे 'थीम विकल्प 'पैनल की बजाय मूल थीम से केवल * एक * विकल्प टैब को हटाने का तरीका जानते हैं? यदि आपके पास इसे देखने का समय है तो मेरा प्रश्न यहां विस्तार से वर्णित है: http://wordpress.stackexchange.com/questions/138584/how-do-i-remove-a-parents-theme-option-tab-through- बच्चे-विषय – J82

1

दुर्भाग्यवश, जिस तरह से थीम विरासत वर्डप्रेस के मामले में काम करती है वह यह है कि बाल थीम फ़ंक्शन केवल मूल थीम फ़ंक्शंस में "जोड़े गए" हैं।

style.css के विपरीत, किसी बच्चे की थीम के functions.php माता-पिता से इसके समकक्ष को ओवरराइड नहीं करते हैं। इसके बजाय, यह माता-पिता के कार्यों के अलावा लोड किया जाता है। Php। (विशेष रूप से, यह माता पिता की फ़ाइल से पहले लोड सही है।) (1)

तो, ऊपर अपने सवाल का सीधा जवाब में, ऐसा लगता है (2) इस तरह से वर्डप्रेस विषयों और बच्चे संभालती के साथ संभव नहीं हो सकता है की तरह विषयों।

व्यक्तिगत रूप से, मैं functions.php फ़ाइल में उन अतिरिक्त कार्यों या चर के बारे में चिंता नहीं करता।

  1. http://codex.wordpress.org/Child_Themes
  2. http://wordpress.org/support/topic/theme-options-in-child-theme
+0

धन्यवाद लेकिन यह वास्तव में सहायक नहीं है क्योंकि यह अनिवार्य रूप से मूल प्रश्न को पुनर्स्थापित करता है। – emersonthis

+0

मुझे विश्वास है कि उत्तर इस तथ्य में निहित है कि बाल थीम मूल विषय कार्यों को हटा नहीं सकती हैं। – summea

+0

मैंने मूल, निहित उत्तर को शामिल करने के लिए उत्तर संपादित किया। :) – summea

8

बच्चे थीम से मूल विषय में थीम थीम को हटाने का सही तरीका माता-पिता की तुलना में कम प्राथमिकता के साथ बुलाए गए बाद_setup_theme क्रिया में remove_theme_support को कॉल करना है।

किसी बच्चे विषयों से functions.php फ़ाइल को मूल थीम के ठीक पहले कहा जाता है, इसलिए यदि आप after_setup_theme के लिए डिफ़ॉल्ट प्राथमिकता का उपयोग करते हैं, तो बच्चे के बाद_setup_theme माता-पिता के सामने बुलाया जाता है, तो आप समाप्त होते हैं अपने बच्चे में मौजूद अस्तित्वहीन थीम समर्थन को हटाने, केवल इसे बाद में चलाने वाले माता-पिता से वापस जोड़ने के लिए .setup_theme चला रहा है।

तो अपनी प्राथमिकता को कम प्राथमिकता के साथ जोड़कर, आप यह सुनिश्चित कर सकते हैं कि माता-पिता के कॉल को उसी क्रिया के बाद कॉल किया जाए।

तो:

// added to child's functions.php  

add_action('after_setup_theme', 'child_after_setup_theme', 11); 
// Parent theme uses the default priority of 10, so 
// use a priority of 11 to load after the parent theme. 

function child_after_setup_theme() 
{ 
    remove_theme_support('custom-background'); 
    remove_theme_support('custom-header'); 
    remove_theme_support('post-formats'); 
    // ... etc. 
} 

twentyeleven विषय के मामले में, आप भी सिर्फ अति-सवारी के लिए अपने बच्चे के functions.php में पूरे twentyeleven_setup समारोह है, लेकिन है कि इस को प्राप्त करने के एक नहीं बल्कि unsubtle तरीका है।

+0

क्या संपूर्ण 'थीम विकल्प' पैनल की बजाय मूल थीम से केवल * एक * विकल्प टैब को निकालने का कोई तरीका है? यदि आपके पास इसे देखने का समय है तो मेरा प्रश्न यहां विस्तार से वर्णित है: http: //wordpress.stackexchange।कॉम/प्रश्न/138584/कैसे-करें-मैं-हटा-ए-माता-पिता-विषय-विकल्प-टैब-थ्रू-द-बच्चे-थीम – J82

+0

माना जाता है कि साइमन सही है। इसे हासिल करने का यह सही तरीका है। हालांकि मैं इसे डब्ल्यूसी स्टोरफ्रंट के बाल थीम में काम नहीं कर सकता। इस शापित कोड को कैसे निकालना है, यह नहीं पता। – retroriff

1

यह एक पुराना धागा है इसलिए मैं यह जोड़ना चाहता हूं कि कोई इस जगह में प्रवेश करता है और कोई जवाब चाहता है। मैं उस सटीक फ़ाइल को ले कर, एक प्रतिलिपि बनाकर और इसे बाल थीम में जोड़कर बाल थीम को हल करता हूं। मेरे पास प्लगइन "उन्नत कोड संपादक" है इसलिए मुझे एफ़टीपी में जाने की आवश्यकता नहीं है। उस विशिष्ट फ़ाइल की प्रतिलिपि बनाएँ जिसे आप संपादित करना चाहते हैं, उसी नाम और सामग्री के साथ बाल थीम में एक नई शीट बनाएं, और उसके बाद इच्छित संपादन करें। यह पहले बच्चे थीम फाइलें लाएगा और आपकी साइट अपडेट हो जाएगी।

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