वर्डप्रेस पर रूटिंग कैसे काम करती है?


13

कोर wp रूटिंग कैसे काम करता है? मुझे समझने में कठिन समय हो रहा है ... एमवीसी में, आपका url mycontroller / myaction की तरह दिखता है जो MyController-> myaction () के लिए मैप करता है

ड्रुपल में, यह index.php है? Q = mycustomerpath / hello जिसे आपके जैसे किसी भी फ़ंक्शन के लिए मैप किया जा सकता है, जो आपके थीम लेआउट में "थीम्ड" वाली सामग्री देता है।

लेकिन wp में, मुझे कोई सुराग नहीं है कि चीजें कैसे की जाती हैं ... यह? P = 1 तो? उत्पाद = 1 ... मैंने रूटिंग प्रवाह के प्रलेखन की खोज की है, लेकिन कोई भी नहीं मिल सकता है (Google सिर्फ कस्टम पर लेख लौटाता है मार्गों) .. मैं पहले कोर मार्ग के मूल सिद्धांतों को समझना चाहता हूँ ..


कोड में खुदाई, मैं प्रत्येक अनुरोध पर इसे query_posts कहता हूँ? पृथ्वी पर हर बार पोस्ट को क्वेरी करने की आवश्यकता क्यों होती है? क्या ऐसे मामले नहीं हैं जहाँ आप वास्तव में पोस्ट प्रदर्शित नहीं करना चाहते हैं ??
योहमान

1
WP में पोस्ट के रूप में सामग्री को सहेजा जाता है। इसलिए, जब आपको सामग्री दिखाने की आवश्यकता होती है, तो आपको इसे क्वेरी करने की आवश्यकता होती है
सिसिर

मे आपको सुझाव देता हूं कि आप "लूप" के बारे में पढ़ें जो कि अवधारणा है जिसे आपको यह जानने के लिए समझने की आवश्यकता है कि वर्डप्रेस कैसे काम करता है। आवश्यक "लूप" पदों की एक सरणी प्रदर्शित करता है जो query_posts का परिणाम है। गैर-व्यवस्थापक URL अनुरोधों के लिए WP को केवल पोस्ट दिखाने के लिए डिज़ाइन किया गया है और यह पोस्ट के अलावा कुछ दिखाने के लिए कस्टम प्रोग्रामिंग लेता है। व्यवस्थापक URL अनुरोध अलग-अलग हैं और ये "लूप" का उपयोग नहीं करते हैं और गैर पोस्ट चीजें दिखाते हैं।

ठीक है, लेकिन यह दृष्टिकोण थोड़ा अजीब है और बहुत लचीला tbh नहीं है
yeaman

मैं एक संपर्क फ़ॉर्म प्रदर्शित करना चाहता हूं .. मुझे अपना HTML पृष्ठ सामग्री प्रकार में डालने की आवश्यकता है? मैं अभी भी यह पता लगाने की कोशिश कर रहा हूं कि फॉर्म सबमिट करने के लिए तर्क कहां रखा जाना चाहिए ... (थीम पेज में। एफपीपी; बहुत बदसूरत दृष्टिकोण)
योहमान

जवाबों:


20

वर्डप्रेस में, यूआरएल मार्गों पर मैप नहीं करते हैं। वे डेटाबेस प्रश्नों के लिए मैप करते हैं।

"डिफ़ॉल्ट" पर्मलिंक मोड में वर्डप्रेस का उपयोग करते समय, आपके पास मुख्य URL क्वेरी में चर का एक सेट होता है, जैसे कि = = 1 या? पृष्ठ = 234 और इसके बाद। वहाँ भी है? एस = खोज और कई अन्य।

यदि आप "सुंदर" पर्मलिंक्स का उपयोग करते हैं, तो "रीराइट राइट्स" नामक नियमों का एक बड़ा सेट बनाया जाता है जो URL पैरामीटर के इसी सेट पर सीधे विभिन्न URL पैटर्न को मैप करता है। तो एक URL जैसे / 2014/04/12 / उदाहरण के लिए मैप करना होगा? वर्ष = 2014 और माह = 04 और दिन = 12 और पोस्टनाम = उदाहरण या समान। तो निम्नलिखित उन पर भी लागू होता है, इस मैपिंग के बाद।

ये चर मूल रूप से WP_Query वर्ग के मुख्य उदाहरण को नियंत्रित कर रहे हैं। WP_Query वर्ग डेटाबेस से "पोस्ट" प्राप्त करने के लिए डेटाबेस क्वेरी बनाने वाली सभी जानकारी रखता है। इसमें दिए गए विभिन्न पैरामीटर यह नियंत्रित करते हैं कि यह किस प्रकार की क्वेरी बनाता है और इसे क्या डेटा मिलता है।

देखें, वर्डप्रेस द्वारा प्रदर्शित की जाने वाली हर चीज अनिवार्य रूप से एक "पोस्ट" है। एक ब्लॉग रिवर्स टाइम-आधारित क्रम में पदों की एक श्रृंखला है। एक "पृष्ठ" परिभाषित नाम के साथ एक स्थिर पोस्ट है। एक "कस्टम पोस्ट प्रकार" बिल्कुल वैसा ही होता है, जैसा आप परिभाषित करते हैं, एक कस्टम प्रकार के साथ "पोस्ट"। वर्डप्रेस में कुछ भी प्रदर्शित करने के सभी मुख्य प्रश्नों को wp_posts तालिका से कुछ सबसेट पोस्ट मिल रहे हैं।

WP_Query वह है जो ऐसा करता है। और URL से पैरामीटर सीधे उस मुख्य क्वेरी में भेजे जाते हैं और वहां उपयोग किए जाते हैं।

यह विषय निर्धारित करता है कि क्वेरी के साथ वापस आने के आधार पर कौन सा टेम्पलेट का उपयोग करना है। यदि आपने / श्रेणी / उदाहरण का अनुरोध किया है, तो वह बन जाता है? वर्ग_नाम = उदाहरण जिसका अर्थ है कि मुख्य $ wp_query-> query_vars सरणी को वह जानकारी मिलेगी, और WP_Query "उदाहरण" श्रेणी के लिए अंतिम एक्स पोस्ट को बाहर निकाल देगा, और यह अपने is_category ध्वज को सत्य पर सेट करेगा।

टेम्प्लेट-लोडर इसके बाद चलेगा, देखें कि is_category () सही है, और श्रेणी टेम्प्लेट को चुनने का निर्णय करता है, इसलिए यह श्रेणी-उदाहरण के लिए खोजेगा। पदानुक्रम।

तो, सवाल यह है कि अगर आप यह बदलना चाहते हैं कि URL कैसे काम करते हैं तो यह आसान है: क्या आप URL बदलना चाहते हैं, या वे किससे मैप किए जाते हैं? क्योंकि URL फ़ंक्शन के लिए मैप नहीं किए जाते हैं, वे क्वेरी को नियंत्रित करने वाले मापदंडों के लिए मैप किए जाते हैं। यदि आप चाहते हैं कि URL उस मुख्य क्वेरी को समायोजित करे, तो यह एक अलग प्रक्रिया है, यदि आप एक विशेष URL कुछ अन्य विशेष कोड चलाना चाहते हैं।

और टिप्पणियों में आपके विशिष्ट प्रश्न का उत्तर देने के लिए: "क्या ऐसे मामले नहीं हैं जहां आप वास्तव में पोस्ट प्रदर्शित नहीं करना चाहते हैं?" नहीं वहाँ नहीं है। सब कुछ एक पोस्ट है। सभी सामग्री पोस्ट में संग्रहीत है। यदि आप सामग्री को कहीं और संग्रहीत करना चाहते हैं और अलग-अलग होना चाहते हैं, तो आप ऐसा कर सकते हैं, लेकिन यह अधिक कठिन है क्योंकि, ईमानदारी से, यह आमतौर पर आवश्यक नहीं है। यदि आपके पास विशेष सामग्री है, तो एक कस्टम पोस्ट प्रकार बनाएं, अपनी सामग्री को उस प्रकार के पोस्ट के रूप में संग्रहीत करें, उसके लिए एक URL पैटर्न मैप करें। आसान।


मैं समझता हूं कि ड्रुपल 6 में कस्टम प्रकारों के माध्यम से सब कुछ एक पोस्ट (कस्टम पोस्ट प्रकार आदि के माध्यम से) का प्रतिनिधित्व किया जाना चाहिए ... लेकिन क्या यह साइट के हर एक सामग्री को संग्रहीत करने के लिए एकल पोस्ट टेबल वाले प्रदर्शन को प्रभावित करता है? ड्रुपल 7 ने इकाई प्रकार की शुरुआत करके इसे हल किया ताकि आपको एक कस्टम प्रकार बनाने और नोड तालिका में सब कुछ स्टोर करने की आवश्यकता न हो लेकिन अपनी स्वयं की इकाई तालिका में जो अभी भी ड्रुपल ढांचे से लाभ उठा सकती है। मुझे उम्मीद है कि वर्डप्रेस भविष्य में इस तरह के दृष्टिकोण का परिचय देगा। विस्तृत विवरण के लिए thx।
योहमान

मुझे लगता है कि अगर मैं एक url को अपने स्वयं के फ़ंक्शन / थीम में मैप करना चाहता हूं, तो wp रूटर मदद करेगा?
यमन

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

मैं कस्टम html / php को एक पोस्ट प्रकार में कैसे जोड़ूं जो मैंने बनाया है? विषय के single.php को संशोधित किए बिना या एकल-mycustompost.php (बहुत पोर्टेबल दृष्टिकोण नहीं)
बनाए बिना

7
Wordpress के साथ काम करने में 1 साल से अधिक समय बीतने के बाद ... मुझे अभी भी इस पर यकीन नहीं है ... रूपरेखा सुरुचिपूर्ण नहीं है और काफी बदसूरत है ... यह एक साधारण ब्लॉग के रूप में काम करता है लेकिन यदि आप अन्य प्रकार की वेबसाइटों को विकसित करना चाहते हैं। यह कुछ ऐसा करने के लिए नहीं था जिसे करने के लिए वर्डप्रेस हैकिंग की तरह है।
यमन y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.