क्या पोते की थीम बनाना संभव है?


15

यदि मैं उत्पत्ति जैसे लोकप्रिय ढांचे में से एक का उपयोग करता हूं, तो क्या यह पोते की थीम बनाना संभव है?

एक उदाहरण के रूप में, मैं अपनी सभी साइटों की रीढ़ के रूप में उत्पत्ति का उपयोग करना चाहता हूं। उत्पत्ति को एक रूपरेखा कहा जाता है, लेकिन वास्तव में एक मूल विषय है।

तब मैं स्टूडियोप्रेस पर बिक्री के लिए उत्पत्ति बच्चे के विषयों में से एक का चयन करता हूं, और अपनी प्रत्येक साइट के लिए इसे अनुकूलित करना जारी रखना चाहता हूं। क्या मैं अपनी सभी साइटों के लिए एक पोते का विषय बनाऊंगा, और मैं इसके बारे में कैसे जाऊंगा?

जवाबों:


18

हां और ना।

आप एक चाइल्ड थीम बना सकते हैं जो किसी अन्य चाइल्ड थीम को माता-पिता के रूप में निर्दिष्ट करता है, और वर्डप्रेस इसका उपयोग करने का प्रयास करेगा।

तथापि

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

उदाहरण के लिए, WP API स्टाइलशीट और टेम्प्लेट URL / निर्देशिकाओं के बीच अंतर करता है, जहाँ स्टाइलशीट हमेशा सक्रिय थीम को संदर्भित करता है, और टेम्प्लेट पेरेंट थीम को संदर्भित करता है, लेकिन यदि एक ग्रैंडपेरेंट थीम शामिल है, तो क्या get_template_directory_uriयह पेरेंट या ग्रैंडेंटेंट को संदर्भित करता है ? एपीआई कॉल के बहुत से लोग अब अस्पष्ट हैं, और विभिन्न लोग विभिन्न व्यवहार की अपेक्षा करेंगे, जिसमें कोड भी शामिल है। आपको functions.phpमाता-पिता या दादा-दादी में से किसी एक को लोड करने की भी आवश्यकता होगी , और सुनिश्चित करें कि यह सही क्रम में किया गया है।

यह बहुत बुरा अभ्यास भी माना जाता है। यदि आपको पोते की थीम की आवश्यकता है तो आपके दृष्टिकोण ने गलत मोड़ ले लिया है, और आपको चीजों को वापस लेने और पुनर्मूल्यांकन करने की आवश्यकता है।

मैं आपको सलाह दूंगा कि आप पोते-पोतियों की अवधारणा से बचें, इससे अधिक समस्याएं पैदा होंगी। इसके बजाय अधिक हुक फिल्टर क्रियाओं और आपके बच्चे के विषय में प्रतिरूपता आपको बच्चे के विषय साझा घटकों को समान रखने में सक्षम बनाती है, और आपको थोड़ी कठिनाई के साथ शाखा / कांटा करने देती है। सामान्य तत्वों को एक svn बाहरी / git सबमॉड्यूल में ले जाने का प्रयास करें।

वहाँ भी _s मॉडल है जहाँ आप अपने बच्चे के विषय को आधार के रूप में रखते हैं, और इसे एक बच्चे के रूप में कॉपी करने के बजाय माता-पिता के रूप में कॉपी करने के लिए काम करते हैं।


तो मेरे मामले में अगर मैं उत्पत्ति के साथ जाऊं तो मुझे सीधे बच्चे के विषय को सीधे संशोधित करना होगा? Git से बहुत परिचित नहीं हैं, लेकिन एक ऐसे दृष्टिकोण में दिलचस्पी लेंगे जो मुझे मूल बाल विषय को अक्षुण्ण रखने में मदद करे।
urok93

हां, आपके पास यहां बहुत सारे विकल्प नहीं हैं।
टॉम जम्मू नॉवेल

मुझे आश्चर्य है कि यदि आप एक महान पोते का विषय बनाने की कोशिश करेंगे तो क्या होगा।
क्रिस_ओ

1
आप उल्लेख करते हैं कि यदि आपको इसकी आवश्यकता है तो विधि ने एक गलत मोड़ ले लिया है। इस कारण से मैं उत्सुक हूं कि WooCommerce Storefront थीम का उपयोग करने जैसे परिदृश्य के कारण। वे बाल थीम को स्टोरफ्रंट को बेचते हैं जो उन्हें विभिन्न चीजों के लिए अनुकूलित किया जाता है। इसलिए यदि मैं उनके किसी बच्चे के विषय का उपयोग कर रहा हूं, लेकिन तब मैं अपने तरीके से अपने बदलाव करने के बारे में जाना चाहता हूं, जब वे अपने बच्चे के विषय को अपडेट करते हैं, तो इसे अधिलेखित नहीं किया जाएगा ... मैं यह कैसे करूंगा?
ड्रू एंजेल

1
मैं नहीं जानता कि, कैसे स्टोर के सामने विषय बनाया गया है की एक सीमा है कि, उस बिंदु पर आप बच्चे विषय कांटा करने के लिए मजबूर कर रहे हैं
टॉम जम्मू नॉवेल

3

मैंने नीचे वर्णित विधि का पूरी तरह से परीक्षण नहीं किया है, न ही एक सामान्य "पोते" थीम, लेकिन टेम्पलेट_संचालित फ़िल्टर की कार्यक्षमता दे रही है :

    /*
    Plugin Name: Grandchild Themes
    Plugin URI: http://www.who-cares.com/
    Description: A concept for Grandchild themes Plugin
    Author: See Plugin URI
    Version: 0.0.0.0.1-Alpha
    */

    add_action('wp_head', 'grnd_chld_add_headers', 0);
    add_action('init', 'grnd_chld_add_css');

    // Load template if exists. 
function grandchild_template_include( $template ) {

    if ( file_exists( untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template ) ) )
        $template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template );

    return $template;
}

// This is the actual filter that we want .
add_filter( 'template_include', 'grandchild_template_include', 11 );

    function grnd_chld_add_headers () {
        wp_enqueue_style('my_grandchild_style');
    }

    function grnd_chld_add_css() {
        $stamp = @filemtime(plugin_dir_path(__FILE__).'/style.css'); // easy versioning
        wp_register_style ('my_grandchild_style', plugins_url('style.css', __FILE__).'', array(), $stamp);
    }

    // From here , what you got is like a normal functions.php.

आप एक समान तरीके से भी अधिक विशिष्ट फ़िल्टरों को आज़मा सकते हैं, जैसे कि आर्काइव_टेमप्लेट

add_filter ('archive_template', create_function ('', 'return plugin_dir_path(__FILE__)."archive.php";'));

सभी ने कहा और किया, मुझे यकीन नहीं है कि यह चीजों को करने का सबसे अच्छा तरीका है।

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