get_template_part बनाम थीम में कार्रवाई हुक


15

यह मुझे लगता है कि इन दोनों को अंतिम उपयोगकर्ता के लिए वास्तव में थीम फ़ाइलों (बाल विषयों के माध्यम से) को संपादित किए बिना एक विषय को संशोधित करने का अवसर प्रदान करता है।

मेरा सवाल है, क्या एक तरीका दूसरे पर पसंद किया जाता है।

उदाहरण के लिए मैं एक विषय पर काम कर रहा हूं। मैं यह तय करने की कोशिश कर रहा हूं कि क्या हुक के टेम्पलेट भागों के साथ जाना है।

<?php get_template_part('before_sitecontainer' ); ?>
<div id="sitecontainer" class="sitecontainer" <?php //closed in footer ?>>

<?php get_template_part( 'before_topcontainer' ); ?>
<div id="topcontainer ">

    <?php get_template_part( 'before_topedge_navigation' ); ?>
    <?php get_template_part( 'topedge_navigation' ); ?>

    <?php get_template_part( 'before_site_header' ); ?>
    <?php get_template_part( 'site_header' ); ?>

    <?php get_template_part( 'before_second_navigation' ); ?>
    <?php get_template_part( 'second_navigation' ); ?>

    <?php get_template_part( 'after_second_navigation' ); ?>

</div><!-- end topcontainer div -->
<?php get_template_part( 'after_topcontainer' ); ?>

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

मैं निश्चित रूप से हुक और फिल्टर का उपयोग करके समान हासिल कर सकता था।

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

या क्या ऐसी परिस्थितियाँ हैं जहाँ एक ही विषय के भीतर एक दूसरे से बेहतर होगा?

जवाबों:


8

मैं हुक पसंद करता हूं, क्योंकि वे अधिक लचीले होते हैं: आप उन्हें अपने विषय की functions.phpफाइल से हुक कर सकते हैं , लेकिन प्लगइन्स से भी। मैं प्लगइन्स में अधिक से अधिक तर्क रखने की कोशिश करता हूं, ताकि थीम में ज्यादातर लेआउट सामान हों।

यदि आप एक्शन हुक का उपयोग करते हैं get_template_part() , तो उस हुक हैंडलर में उपयोग करना अभी भी संभव है । यह आपको दोनों दुनियाओं में सर्वश्रेष्ठ देता है। आप शायद एक डिफ़ॉल्ट हुक भी बना सकते हैं जो कॉल करता है get_template_part(), ताकि जिन लोगों को कोडिंग के साथ अधिक अनुभव नहीं है वे अतिरिक्त फाइलें जोड़ सकते हैं, और अन्य इस हुक को हटा सकते हैं यदि वे नहीं चाहते हैं।

के बारे में प्रदर्शन: get_template_part()उपयोग करता है ( मेंlocate_template() ) file_exists()एक, दो या चार बार (आप इसे कैसे फोन के आधार पर)। ऐसा प्रतीत होता है file_exists()कि यह बहुत तेज़ है , और PHP और शायद OS में भी कैशिंग का उपयोग करता है । तो यह शायद एक मुद्दा नहीं है।


यह समझ आता है। मेरे डिजाइन थ्रस्ट का एक हिस्सा अधिकांश आम उपयोग स्थितियों में प्लगइन्स की आवश्यकता को समाप्त करना है, जबकि अभी भी उन्हें उन लोगों के साथ उपयोग करने की क्षमता को संरक्षित करना है जो वे चाहते हैं। मेरा लक्ष्य ग्राहक वर्डप्रेस या प्लगइन्स के बारे में बहुत कम जानता है, अच्छे प्लगइन्स को खराब (प्लगइन्स आईएमओ की प्रमुख कमजोरी) से बताने के लिए योग्य नहीं है और सॉफ्टवेयर के कई टुकड़ों को अपडेट करने और प्रबंधित करने के लिए सौदा नहीं करना चाहता है। इसलिए मुझे थीम में बहुत सारी कार्यक्षमता का निर्माण करना है ताकि वे जो चाहें वितरित कर सकें: एक सरल उपयोग, सरल बनाए रखने के लिए, एक स्टॉप समाधान।
एशले जी

4

मैं कहूंगा कि मुख्य अंतर पठनीयता है। यदि आप कई, अच्छी तरह से नामित टेम्पलेट भागों को देखते हैं, तो आप समझ सकते हैं कि आसानी से क्या हो रहा है। यदि आप सिर्फ एक हुक देखते हैं, तो आपको हुक से जुड़ी हुई चीजों को स्थापित करने के लिए बाकी थीम के माध्यम से खोजना होगा।


1
हाँ, यह समझ में आता है, और उदाहरण कोड के साथ मैं जो हासिल करने की कोशिश कर रहा था उसका हिस्सा है।
एशले जी

4

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

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

उन उपयोगकर्ताओं के लिए जो तकनीक प्रेमी नहीं हैं और न ही बहुत अच्छा विकल्प है। वैसे भी उन्हें इस तरह के थीम इंटर्न के साथ गड़बड़ करने की आवश्यकता क्यों होगी?

PS भी प्रदर्शन के मुद्दों पर ध्यान दें। हुक के साथ सामान मेमोरी में होता है, टेम्प्लेट के साथ सामान डिस्क के बहुत सारे लुकअप लेता है। खासकर यदि आप अपने उदाहरण में कुछ लिख रहे हैं।

पीपीएस हर किसी की प्राथमिकता नहीं है ... लेकिन मूल विषय को स्क्रैच से लिखने के बजाय क्यों नहीं मौजूदा माता-पिता की थीम लें और उपयोगकर्ता को सरल चाइल्ड थीम प्रदान करें?


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

हालांकि प्रदर्शन के मुद्दों के बारे में अच्छे अंक। हालाँकि, जैसा कि wordpress को get_template_part के साथ काम करने के लिए डिज़ाइन किया गया था, मैंने सोचा होगा कि यह इतना अच्छा प्रदर्शन नहीं होगा। किसी को भी इस पर कोई मानक है?
एशले जी

मुझे लगता है कि आप एक टेम्पलेट भाग की अनदेखी करने के बारे में क्या मतलब है। जितना मैंने सोचा था उतना आसान नहीं है
एशले जी

वास्तव में यह बाल फ़ोल्डर में एक खाली टेम्पलेट फ़ाइल रखने जितना आसान है, बशर्ते कि यह फ़ोल्डर की जड़ में हो। यह मुश्किल हो जाता है जब टेम्पलेट फ़ाइलें माता-पिता / बच्चे थीम फ़ोल्डर के सबफ़ोल्डर में होती हैं
एशले जी

दरअसल, यहां तक ​​कि सबफ़ोल्डर्स को भी कोई समस्या नहीं है। मेरे पास केवल गलत नाम का फ़ोल्डर था (एक निश्चित संकेत है कि मैं बहुत देर से काम कर रहा हूं)। एक टेम्प्लेट भाग को ओवरराइड करने के लिए केवल बच्चे में उसी नाम की एक फ़ाइल की आवश्यकता होती है जैसे कि माता
एशले जी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.