आपको किसी को भी संदेह होना चाहिए जो कहता है कि एक एकल "सही" तरीका है। सही तरीका स्थिति पर निर्भर करता है। CPT अवसंरचना का उपयोग करने के कई उल्लेखनीय लाभ हैं:
- आपको मुफ्त में डैशबोर्ड यूआई मिलता है
- आप स्वचालित रूप से किसी भी लगातार कैश प्लग इन सहित WP के कैशिंग का लाभ उठाते हैं, जो कि इंस्टॉलेशन का उपयोग कर सकते हैं
- आपको स्वचालित रूप से पोस्ट रिवीजन जैसे उपहार मिलते हैं
- आप
WP_Query
कक्षा तक पहुँचते हैं , जिसका अर्थ है कि, सिद्धांत रूप में, आपको कोई भी (या कम से कम बहुत अधिक) संभावना-से-छोटी गाड़ी और कमजोर-अक्षम SQL लिखने की ज़रूरत नहीं है
- यदि आप प्लगइन वितरित करने या इसे ओपन-सोर्स विकास के लिए खोलने की योजना बना रहे हैं, तो आप पा सकते हैं कि डेवलपर्स कस्टम पोस्ट प्रकारों और अपने स्वयं के कस्टम सामान की तुलना में संबद्ध एपीआई कार्यों का उपयोग करके अधिक आरामदायक हैं।
CPT API के साथ समस्याएं ज्यादातर इस तथ्य से उपजी हैं कि यह 'पदों' के रूपक से अत्यधिक विवाहित है, और उस डेटा प्रकार के सभी पहलू जो रूपक के साथ आते हैं। MySQL कमांड लाइन से, रन करें DESCRIBE wp_posts
। WP मानता है कि आपकी सामग्री का एक शीर्षक है, कि इसमें एक (एकल) लेखक है, जिसे आपको केवल बनाई गई तारीख और अंतिम-संपादित तारीख का ट्रैक रखने की आवश्यकता है, जिसे आपको एक अनइंडैक्स के लिए स्थान की आवश्यकता होगी post_content
, आदि। यह काम करता है अच्छी तरह से सामग्री के कुछ प्रकार के लिए, लेकिन दूसरों के लिए जरूरी नहीं है। आप पहले से ही कुछ संभावित समस्याओं की दिशा में इशारा कर चुके हैं:
अगर मैं उस मार्ग पर जाऊं तो मुझे अपने अतिरिक्त क्षेत्रों के लिए पोस्ट मेटाफ़िल्ड की आवश्यकता होगी, और अगर वह चीज़ों को मुश्किल बना देगा "
wp_posts
CPT API के माध्यम से स्कीमा को बढ़ाने के दो तरीके हैं : पोस्टमेटा और टैक्सोनॉमी। पोस्टमेटा बिना चाबी के मूल्य के जोड़े हैं, जो विविध डेटा का एक गुच्छा संग्रहीत करने के लिए बहुत अच्छा है, लेकिन जटिल लुकअप करने के लिए बिल्कुल भी अनुकूलित नहीं है। इस संबंध में टैक्सोनॉमी कुछ अधिक लचीली हैं, लेकिन यदि आपके पास बहुत जटिल लुकअप हैं, तो आप अभी भी संभावित रूप से महंगी उप-श्रेणियों का सामना करेंगे। ( meta_query
और tax_query
तर्क और उनके क्वेरी कंस्ट्रक्टर वर्ग बहुत अच्छे और आसान हैं, हालांकि)
हैं, तो आप का सुझाव के रूप में, आप केवल "अर्द्ध जटिल रिलेशनल फिल्टर" कभी-कभी रिपोर्ट के मामले में इस प्रकार की क्या करने की जरूरत है, तो इस वास्तुकला शायद आप के लिए ठीक है। यह तब होता है जब आप उपयोगकर्ताओं को फ़िल्टर दिखाना शुरू करते हैं, ताकि आपको हर समय कई जटिल JOIN
एस और सबक्वेरीज़ चलाने पड़ें, जिससे चीजें जल्दी से हाथ से निकल जाएं।
रिश्तों को सबसे अच्छा कैसे प्रबंधित करें, खासकर अगर मेरे कई रिश्ते हैं
कई-कई रिश्ते WP देव समुदाय में एक लंबे समय से चिपके बिंदु हैं (देखें https://core.trac.wordpress.org/ticket/14513 )। आप post_ids पर टैक्सोनॉमी आइटम मैप करके कस्टम टेबल का उपयोग किए बिना इसे नकली कर सकते हैं (ताकि, उदाहरण के लिए, आप यह कह सकते हैं कि 'P3 का संबंध Y से P5' है यह कहकर कि P3 का टैग 'Y-P3' है) लेकिन भ्रमित हो जाता है (और अक्षम) बहुत जल्दी। आप अपनी खुद की रिलेशनशिप टेबल बनाने पर भी विचार कर सकते हैं जो सीपीटी से जुड़ती है - फिर भी आपको सीपीटी का लाभ मिलेगा, और केवल एक ही डीबी टेबल बनाया जा सकता है। इस पद्धति के एक अच्छी तरह से निष्पादित संस्करण के लिए, पोस्ट 2 पोस्ट प्लगइन देखें: https://wordpress.org/extend/plugins/posts-to-posts/
तो, अंत में, आपको इसके आधार पर निर्णय लेना चाहिए:
- जिस तरह के डेटा आप स्टोर कर रहे हैं - वे "पोस्ट" y कैसे हैं
- जिन प्रकार के प्रश्नों की आवश्यकता होगी - वे कितने जटिल होंगे
- वेतनमान - आपका वांछित स्कीमा कितना जटिल है, आपके पास कुल कितनी वस्तुएं होंगी और आप कितने उपयोगकर्ताओं का अनुमान लगाते हैं
यदि उत्तर हैं: बहुत पोस्टी, बहुत जटिल नहीं है, और सुपर-विशाल पैमाने पर नहीं है, तो सीपीटी के साथ जाएं। अन्यथा अपनी खुद की तालिकाओं पर विचार करें।