यह पोस्ट कुछ सवालों को सामने लाती है जो मैंने हाल ही में इस थ्रेड और इस थ्रेड में लाए गए स्टाइलशीट एनक्यूइंग तरीकों के बदलावों से संबंधित हैं ।
जिन मुद्दों का मुझे सामना करना पड़ा, वे एक सामान्य उपयोग के मामले में सामने आए, एक व्यापक रूप से इस्तेमाल किए गए और अच्छी तरह से बनाए हुए मूल विषय का उपयोग करके जो कि विशेष रूप से WP-4.0 पर स्थापित चाइल्ड-थीम है। मेरे बाल विषय के फ़ंक्शन .php में कोडेक्स में विस्तृतwp_enqueue_style
रूप में केवल फ़ंक्शन शामिल है ।
कृपया ध्यान दें कि नीचे उल्लिखित कोड इस विषय के लिए विशिष्ट है, लेकिन इसका अधिकांश मूल विषयों द्वारा उपयोग किए जाने वाले वर्तमान कोडिंग सम्मेलनों का उपयोग करता है। इसके अतिरिक्त, मेरे क्षेत्रों में वर्तमान में जंगली में बड़ी संख्या में स्थापित मूल विषयों पर चिंता की संभावना है। साथ ही, ये प्रश्न एक सार्वभौमिक स्तर पर लागू होते हैं, इसके बावजूद कि मूल विषय का उपयोग किया जा रहा है।
ISSUE 1: द्विअर्थी
अनुशंसित सेटअप:
मूल विषय wp_enqueue_scripts
हुक का उपयोग करते हुए शैलियों और लिपियों की गणना कर रहा है, इस प्रकार के रूप में किया जा रहा है:
add_action('wp_enqueue_scripts', 'parent_theme_function_name');
function parent_theme_function_name() {
wp_register_style( 'avia-style' , $child_theme_url."/style.css", array(), '2', 'all' );
wp_enqueue_style( 'avia-base');
if($child_theme_url != $template_url) { wp_enqueue_style( 'avia-style'); }
}
मेरा बच्चा विषय functions.php
हाल ही के कोडेक्स परिवर्तनों के अनुसार शैलियों की व्याख्या करता है:
add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style' );
function enqueue_parent_theme_style() {
wp_enqueue_style( 'dm-parent-style', get_template_directory_uri().'/style.css' );
}
निम्नलिखित आईडी पर ध्यान दें जो संदर्भित कोड द्वारा उपयोग किया जाता है:
id='dm-parent-style-css'
पैरेंट थीम की स्टाइलशीट है, जैसा कि मेरे चाइल्ड थीम फंक्शन द्वारा दी गई हैid='avia-style-css'
मूल विषय फ़ंक्शन के अनुसार मेरे बाल विषय की स्टाइलशीट हैid='dm-child-style-css'
मेरे बच्चे के विषय की स्टाइलशीट है, जैसा कि मेरे बच्चे के थीम फ़ंक्शन के अनुसार है
परिणाम:
पहली नज़र में, सबकुछ ठीक था, साथ <head
> निम्नलिखित आदेश दिखा रहा है:
<link rel='stylesheet' id='dm-parent-style-css' href='testinstall.dev/wp-content/themes/enfold/style.css?ver=4.0' type='text/css' media='all' />
<!-- Multiple individual parent theme styles here -->
<link rel='stylesheet' id='avia-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
एक प्लगइन स्थापित करने के बाद, enqueue ऑर्डर अब निम्नानुसार बदल गया है:
<link rel='stylesheet' id='dm-parent-style-css' href='testinstall.dev/wp-content/themes/enfold/style.css?ver=4.0' type='text/css' media='all' />
<!-- Multiple individual parent theme styles here -->
<link rel='stylesheet' id='avia-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
<!-- Pesky plugin styles -->
अंत में, मुझे किसी भी प्लगइन्स के बाद लोड करने के लिए अपने बच्चे के विषय की सीएसएस की आवश्यकता है, इसलिए मुझे अपने बच्चे के विषय में फ़ंक्शन में एक प्राथमिकता संख्या जोड़ने के लिए मजबूर किया गया था (प्राथमिकता संख्या के बारे में पिछली चर्चा देखें) ।
क्योंकि मेरा कार्य केवल मूल विषय के css को दर्शाता है, हालाँकि, इसका परिणाम यह है कि अब मूल विषय css अंत में स्थानांतरित हो जाता है, जिससे मेरे बाल विषय का css पहले से भी अधिक खराब हो जाता है।
<!-- Multiple individual parent theme styles here -->
<link rel='stylesheet' id='avia-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
<!-- Pesky plugin styles -->
<link rel='stylesheet' id='dm-parent-style-css' href='testinstall.dev/wp-content/themes/enfold/style.css?ver=4.0' type='text/css' media='all' />
अब मुझे अपनी चाइल्ड थीम स्टाइल को समझने का सहारा लेने के लिए मजबूर होना पड़ रहा है, यह सुनिश्चित करने के लिए कि वह लाइन के सामने वापस चली जाए, जिससे दो विषय (नए शब्द? Lol) का उपरोक्त मुद्दा चाइल्ड थीम सीएसएस हो जाए।
पदावनत सेटअप:
बाल विषय में संशोधित कार्य:
add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style', 99 );
function enqueue_parent_theme_style() {
wp_enqueue_style( 'dm-parent-style', get_template_directory_uri().'/style.css' );
wp_enqueue_style( 'dm-child-style', get_stylesheet_directory_uri().'/style.css' );
}
परिणाम:
निम्नलिखित आदेश का उत्पादन <head>
:
<!-- Multiple individual parent theme styles here -->
<link rel='stylesheet' id='avia-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
<!-- Pesky plugin styles -->
<link rel='stylesheet' id='dm-parent-style-css' href='testinstall.dev/wp-content/themes/enfold/style.css?ver=4.0' type='text/css' media='all' />
<link rel='stylesheet' id='dm-child-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
हालांकि मेरे कार्य में बाल स्टाइलशीट को शामिल करने के कारण इसे दो बार enqueued किया गया था, IMHO जो इस धारणा के तहत कोडिंग पर बेहतर है कि मूल विषय हमारे लिए हमारे चाइल्ड स्टाइलशीट को ठीक से एनक्यू करेगा। प्रत्येक संलग्न शैली को सौंपी गई आईडी के आधार पर, ऐसा प्रतीत होता है कि मूल विषय WP कोर में कुछ भी नहीं, इसे लागू करता है।
मेरा शिवम:
यद्यपि मैं शायद ही यह सुझाव दूंगा कि यह अनुशंसित साधन हो (और मुझे यकीन है कि स्वयं से अधिक कोडिंग अनुभव वाले देव इस समाधान में डूबेंगे), मैंने मूल विषय की आईडी (मेरे बच्चे के विषय की शैली को समझने के लिए प्रयुक्त) को अपने स्वयं के चक्रव्यूह से ठीक ऊपर हटा दिया। जैसा कि दिखाया गया है मेरे बच्चे के विषय के कार्य फ़ाइल में:
add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style', 99 );
function enqueue_parent_theme_style() {
wp_enqueue_style( 'dm-parent-style', get_template_directory_uri().'/style.css' );
wp_dequeue_style( 'avia-style' );
wp_enqueue_style( 'dm-child-style', get_stylesheet_directory_uri().'/style.css' );
}
परिणाम:
इससे समस्या हल हो गई, जिसके परिणामस्वरूप:
<!-- Multiple individual parent theme styles here -->
<!-- Plugin styles -->
<link rel='stylesheet' id='dm-parent-style-css' href='testinstall.dev/wp-content/themes/enfold/style.css?ver=4.0' type='text/css' media='all' />
<link rel='stylesheet' id='dm-child-style-css' href='testinstall.dev/wp-content/themes/child-theme/style.css?ver=2' type='text/css' media='all' />
बेशक, यह मूल विषय द्वारा उपयोग की जाने वाली आईडी को जानने की आवश्यकता है - मानक बाल विषय विकास पद्धति के रूप में उपयोग करने के लिए कुछ अधिक सामान्य की आवश्यकता होगी।
ISSUE 2: स्थानांतरित बाल शैलियों
(यह मानना मुश्किल है कि यह किसी अन्य सूत्र में नहीं आया है, हालांकि मुझे देखते समय किसी भी विशिष्ट व्यक्ति को नहीं देखा था ... अगर मैंने इसे याद किया, तो इसे अपने ध्यान में लाने के लिए स्वतंत्र महसूस करें।)
मैं अपनी थीम शैलियों के लिए कभीstyle.css
भी बाल थीम रूट निर्देशिका में डिफ़ॉल्ट का उपयोग नहीं करता - यह स्पष्ट रूप से वहां होना है, लेकिन मेरी सभी वास्तविक शैलियों को SCSS से एक छोटा / सीएसएस / निर्देशिका में एक .css फ़ाइल के रूप में संकलित किया गया है। यद्यपि मुझे एहसास है कि यह बाल थीम के विकास के लिए सार्वभौमिक स्तर पर "अपेक्षित आदर्श" नहीं है , सबसे गंभीर वर्डप्रेस डेवलपर्स मुझे पता है कि कुछ इसी तरह का है। यह निश्चित रूप से, अपने स्टाइल में उस स्टाइलशीट को मैन्युअल रूप से एन्केयूट करने की आवश्यकता है, भले ही मूल विषय ने इसे लागू किया हो या नहीं।
इसे पूरा करने के लिए ...
- क्या यह धारणा शामिल करना सुरक्षित है कि माता-पिता की थीम बाल विषय शैलियों को सही ढंग से समझती है, बाल विषय मानकों के दृष्टिकोण से?
- प्राथमिकता को हटाने से संभवतः वर्डप्रेस समुदाय के हिस्से के लिए और अधिक भ्रम पैदा हो सकता है, जब चाइल्ड थीम शैली एक प्लगइन द्वारा अधिलेखित होने लगती है। हम शैलियों को अधिलेखित करने के लिए थीम की अपेक्षा करते हैं, लेकिन प्लगइन्स के साथ ऐसा नहीं है।
- वास्तविक बाल थीम शैलियों के लिए एक कस्टम स्टाइलशीट का उपयोग करते समय (जैसा कि उन्हें पूर्वनिर्धारित में
style.css
रखना चाहिए ), मैन्युअल रूप से उस फ़ाइल को एनक्यूइंग करना आवश्यक हो जाता है। डेवलपर्स के एक विस्तृत स्पेक्ट्रम में निरंतरता बनाए रखने के संदर्भ में, क्या यह संभव नहीं है कि संभावित डुप्लिकेट की परवाह किए बिना बाल स्टाइलशीट को मैन्युअल रूप से प्रोत्साहित करने के लिए?