मैं वर्डप्रेस प्लगइन्स विकसित करने के लिए सर्वोत्तम प्रथाओं के बारे में कुछ राय प्राप्त करना चाहूंगा जो थीम एकीकरण प्रदान करते हैं।
इस प्रश्न को समझने के लिए, मुझे इस परिदृश्य के काल्पनिक उदाहरण से शुरू करने की आवश्यकता है, जिसके बारे में मैं उत्सुक हूं। कल्पना कीजिए कि मैं "डिस्कोग्राफ़ी" नामक एक प्लगइन बनाता हूं। डिस्कोग्राफी तीन कस्टम पोस्ट प्रकारों को पंजीकृत करता है: "बैंड", "एल्बम", और "ट्रैक"। प्लगइन मेटा बॉक्स भी प्रदान करता है जो प्रत्येक पोस्ट प्रकार के लिए विवरण प्रदान करता है, साथ ही प्रत्येक पोस्ट प्रकार को व्यवस्थित करने के लिए कस्टम टैक्सोनॉमी भी। ये पोस्ट प्रकार पोस्ट 2 पोस्ट प्लगइन के साथ एक साथ बंधे हैं । व्यवस्थापक के भीतर, उपयोगकर्ता नए बैंड जोड़ सकता है, जो एल्बमों के साथ जुड़ा हो सकता है, जो बदले में पटरियों के साथ जुड़े हुए हैं, जिनमें से सभी में मेटा बॉक्स और टैक्सोनॉमी के माध्यम से बहुत सारे अन्य डेटा जोड़े जाएंगे।
अब, मैं नहीं चाहता कि यह प्लगइन केवल उपयोगकर्ताओं के लिए इस जानकारी को दर्ज करने के लिए एक व्यवस्थापक सेट करे; मैं चाहूंगा कि यह डेटा के लिए कुछ डिफॉल्ट डिस्प्ले प्रदान करे। एक अधिक उन्नत उपयोगकर्ता / डेवलपर केवल इस व्यवस्थापक के लिए ठीक होगा। यह उस विषय में डेटा और उपयोग को हथियाने के लिए उसके लिए काफी आसान होगा; हालांकि, कुछ डिफ़ॉल्ट विचारों के बिना, यह प्लगइन अधिकांश उपयोगकर्ताओं के लिए बेकार होगा। इस उदाहरण के लिए, आप कुछ भी प्रदर्शित कर सकते हैं (जैसे कोष्ठक पदानुक्रम के क्रम में जानकारी प्रदर्शित की जा सकती है)
- बैंड (एकल-उपसर्ग-बैंड। एफपीपी, एकल. एफपी, इंडेक्स। एफपी, शोर्ट)
- एल्बम (एकल-उपसर्ग- album.php, single.php, index.php, शोर्ट)
- ट्रैक्स (एकल-उपसर्ग-ट्रैक.php, single.php, index.php, शोर्ट)
- बैंड लिस्टिंग (टेम्प्लेट-बैंड- list.php, पेज-बैंड-लिस्टिंग.php, पेज- {id} .php, page.php, index.php, शोर्ट)
- एल्बम सूचीकरण (टेम्प्लेट-एल्बम-सूची.php, पृष्ठ-एल्बम-सूची.php, पृष्ठ- {id} .php, page.php, index.php, शोर्ट)
- एल्बम टाइमलाइन (टेम्प्लेट-एल्बम-टाइमलाइन। एफपीपी, पेज-एल्बम-टाइमलाइन। एफपी, पेज- {आईडी} .php, पेज.php, index.php, शोर्ट)
यह महत्वपूर्ण है कि इन पोस्ट प्रकारों के लिए कुछ डिफ़ॉल्ट प्रस्तुति हो क्योंकि डिफ़ॉल्ट टेम्पलेट फ़ाइलें उन सभी सूचनाओं को प्रदर्शित नहीं करेंगी जो प्रत्येक पोस्ट प्रकारों के लिए आवश्यक हैं। उदाहरण के लिए, ट्वेंटी इलेवन विषय, डिफ़ॉल्ट रूप से, केवल एक एल्बम के लिए नाम, श्रेणियां, विवरण और पोस्ट की तारीख दिखाएगा। एक एल्बम के लिए बहुत उपयोगी नहीं है। मैं एक एकल पोस्ट टेम्प्लेट प्रदान करना चाहता हूं जो बैंड में जारी करता है, रिलीज की तारीख, रिकॉर्ड लेबल, एल्बम संस्करण, ट्रैक, आदि। एक प्लगइन डेवलपर के रूप में मुझे लगता है कि यह प्रदान करना महत्वपूर्ण होगा। मुझे पता है कि टेम्प्लेट हर विषय के लिए काम नहीं करेगा, लेकिन कुछ डिफ़ॉल्ट होने चाहिए जो उपयोगकर्ता के विषय के साथ आगे एकीकृत हो सकते हैं।
फिर से, मैं उत्सुक हूं कि इस स्थिति को संभालने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि आप निम्न में से कोई भी कर सकते हैं।
शॉर्टकोड
शॉर्टकोड को एक बहुत ही लचीले और उपयोगकर्ता के अनुकूल तरीके के रूप में इस्तेमाल किया जा सकता है ताकि गैर-देवियों को साइट में कहीं भी एक बैंड, एल्बम, ट्रैक, बैंड सूची आदि को जोड़ने की अनुमति मिल सके। यह विशिष्ट पृष्ठों पर बैंड की विशेषता या प्रत्येक बैंड के लिए अलग पेज बनाने में मददगार होगा (बहुत कुशल नहीं है, लेकिन कुछ उपयोगकर्ता इस तरह से चीजों को प्राप्त करते हैं)। शॉर्टकोड HTML उत्पन्न करेगा, जो एक प्रदान की गई सीएसएस फ़ाइल से बंधा होगा जो वांछित डेटा का एक अच्छा डिफ़ॉल्ट दृश्य प्रदान करेगा। सब कुछ प्लगइन फ़ाइलों के भीतर निहित होगा और विषय के साथ कुछ भी करने की आवश्यकता नहीं होगी।
टेम्पलेट फ़ाइलें
प्लगइन टेम्पलेट फाइलों के साथ भी जहाज कर सकता है। टेम्पलेट फ़ाइलों को चिह्नित किया जा सकता है और एक अच्छे डिफ़ॉल्ट दृश्य के लिए स्टाइल किया जा सकता है। आप अपने उपयोगकर्ता को थीम फ़ोल्डर में फ़ाइलों को स्थानांतरित करने के लिए निर्देश प्रदान कर सकते हैं, ताकि पोस्ट के प्रकारों को देखने पर थीम सही टेम्पलेट मिल जाए। आप यहां तक जा सकते हैं कि एक इंटरफ़ेस प्रदान करने के लिए उपयोगकर्ता को एक क्लिक के साथ फ़ाइलों को स्थानांतरित करने की अनुमति दें (ध्यान दें: मैं सक्रियण पर उपयोगकर्ता के थीम फ़ोल्डर में फाइलें नहीं बनाऊंगा क्योंकि उनके विषय में फ़ाइलों को जोड़ना उनके बिना आरंभ करना बुराई है) ।
आप इन फ़ाइलों का उपयोग करने के लिए फ़िल्टर का उपयोग कर सकते हैं, उन्हें प्लगइन फ़ोल्डर से बाहर ले जाने के बिना, सब कुछ स्वयं को निहित रखते हुए। मैंने "template_include" और "{$ प्रकार} _template" फ़िल्टर इस प्रयोजन के लिए उपयोग किए हैं। वास्तव में, आप थीम फ़ोल्डर से टेम्पलेट्स का उपयोग कर सकते हैं और यदि वे मौजूद नहीं हैं, तो आप डिफ़ॉल्ट दृश्य प्रदान करने के लिए इन फ़िल्टर पर वापस गिर सकते हैं।
प्रश्न
मुझे यह जानना पसंद है कि अन्य लोग इन स्थितियों के लिए सबसे अच्छे अभ्यास क्या हैं, यदि प्रस्तुत विचार किसी भी तरह से समस्याग्रस्त हैं, और कोई भी विकल्प जो मैंने शामिल नहीं किया है।
धन्यवाद!