Get_template_part () का उपयोग कैसे करें?


25

क्या कोई मुझे समझा सकता है कि यह फ़ंक्शन कैसे काम करता है? मुझे पता है कि यह क्या करता है, लेकिन जब मैं बीसवाँ टेम्पलेट में स्रोत कोड को देखता हूं, तो मुझे नहीं मिलता है कि एक ही लूप में सभी लूप कैसे एकत्र किए जा रहे हैं। एफपीपी (मैंने उस फ़ाइल को भी देखा)।

तो उदाहरण के लिए टेम्पलेट के एक निश्चित सामान्य भाग को कैसे अमूर्त किया जाए और फिर इसे अन्य टेम्पलेट्स में पुन: उपयोग किया जाए?


जवाबों:


25

कुछ बहुत अच्छे परिचयात्मक उत्तर यहां दिए गए हैं।

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

इसलिए, उदाहरण के लिए, आप एक ब्लॉग को स्टाइल कर रहे हैं और आप एक लूप.फैप फाइल बनाते हैं जो पोस्टों को चिह्नित करने के लिए अच्छी तरह से काम करता है। लेकिन आप आगे की योजना बनाते हैं, और आप इसे अपने टेम्प्लेट फ़ाइलों में बाद में अतिरिक्त संदर्भ विनिर्देशक के साथ कहते हैं - कहते हैं, इंडेक्स पेज पर, आप कॉल करते हैं get_template_part( 'loop', 'index' );, एकल टेम्पलेट पर, आप कॉल करते हैं get_template_part( 'loop', 'single' );, संग्रह के पन्नों पर, आप कॉल करते हैं get_template_part( 'loop', 'archive' );, और इसी तरह। जब आप अपने संग्रह पृष्ठों पर लूप को होम पेज से अलग करने का निर्णय लेते हैं, तो यह सड़क को बहुत आसान बना देता है: बस एक लूप- आर्काइव बनाएँ । टेम्पलेट और इसका उपयोग सामान्य लूप के बजाय किया जाएगा ।

लेकिन पीछे get_template_part()का जादू फ़ंक्शन में है locate_template(), जो पहले थीम डायरेक्टरी की जांच करता है, फिर नाम वाली फ़ाइल के लिए मूल निर्देशिका (यदि कोई मौजूद है)। यह प्लगइन विकास के लिए बहुत उपयोगी है। मेरे एक प्लग इन में, मैं एक कस्टम पोस्ट प्रकार को परिभाषित करता हूं और अपनी प्लगइन निर्देशिका में उस कस्टम पोस्ट प्रकार के लिए एक लूप टेम्पलेट फ़ाइल बनाता हूं। लेकिन ... यदि वे चुनते हैं तो मैं अपने प्लगइन का उपयोग करके थीम को अनुमति देना चाहता हूं। यह वह जगह है जहाँ locate_template()वास्तव में अद्भुत काम करता है।

locate_template($template_names, $load = false, $require_once = true )

शैलियों टेम्पलेट निर्देशिका में $ template_names सरणी में प्रत्येक नाम की तलाश करेंगे, फिर टेम्पलेट निर्देशिका में। $ लोड तर्क के रूप में 'सही' पास करने का मतलब है कि इसे पहली फ़ाइल की आवश्यकता होगी , और यदि कोई टेम्पलेट फ़ाइल स्थित नहीं थी, तो एक खाली स्ट्रिंग लौटाएगा। तो मैं अपने प्लगइन में ऐसा कुछ कर सकता हूं:

if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
    include( 'loop-mycustomposttype.php' );

... जो थीम डेवलपर्स के लिए अपने थीम में सिर्फ लूप-माइकोस्टेपोस्टाइप . php नामक फाइल को शामिल करके मेरे प्लगइन को अनुकूलित करना बहुत आसान बना सकता है ।


2
कृपया इसके द्वारा find_template बदलें। include(locate_template( 'loop-mycustomposttype.php')) इस तरह से चर को पार करना संभव है। मैंने इसे यहाँ लिंक पाया है । यह अत्यंत उपयोगी है!
पाब्लो एसजी पाचेको

1
ऐसा करने के लिए अगर यह भी बदलने के लिए आवश्यक होने जा रहा है। इस तरहif ( false === include(locate_template( 'loop-mycustomposttype.php')) )
पाब्लो एसजी पचेको

1
ओह, अच्छी बात है। मेरे द्वारा दिए गए सूत्र के साथ, requireया require_onceकॉल (से locate_template) एक फ़ंक्शन के अंदर है और इसलिए वर्तमान गुंजाइश तक पहुंच नहीं है।
सुनहरीमछली १०'१४

5

सभी लूप नहीं, मुख्य लूप। ;-) कोई फर्क नहीं पड़ता कि आप अपने मुख पृष्ठ या एक श्रेणी या whoknowswhat को देखो, तुम हमेशा एक मुख्य लूप होगा। उस मुख्य लूप की सामग्री उस क्वेरी द्वारा निर्धारित की जाती है जिसे आपके टेम्प्लेट के चलने से पहले चलाया जाता है।

Loop.php टेम्पलेट केवल लूप में आइटम पर चलता है और उन्हें प्रारूपित करता है। कोडेक्स में प्रलेखन देखें ।

आप बीस-दस के loop.php को देखें, तो आप देख सकते हैं कि बीस-दस तो diversifies भीतर है कि एक टेम्पलेट फ़ाइल।

get_template_part()केवल एक टेम्पलेट भाग लोड करता है और इसके माध्यम से चलता है। आप बस अपने लूप के हिस्सों को अलग-अलग फ़ाइलों में निकाल सकते हैं और get_template_part('loop', 'category')कॉल पर उन्हें एक से बदल सकते हैं ।

या आप लूप में प्रत्येक व्यक्तिगत पोस्ट के लिए एक पार्ट-टेम्प्लेट रख सकते हैं और अपना लूप पा सकते हैं। केवल क्लॉज़ के get_template_part('loop','post');भीतर कॉल करें while...। सब तुम्हारे ऊपर है।


3

से get_template_part कोडेक्स :

<?php get_template_part( 'loop', 'index' ); ?>

पहले मौजूद फ़ाइल के लिए PHP () की आवश्यकता होगी ...

तो प्रभावी रूप से यह काम करेगा जैसे कि आपको एक और php फ़ाइल की आवश्यकता थी।

अपडेट : 'आवश्यकता' के लिए थोड़ा अंतर है - यह एक फ़ंक्शन के अंदर लपेटा जाता है, इसलिए आपको globalअपने टेम्पलेट से किसी भी चर को अपने टेम्पलेट भाग में पारित करना होगा ।

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