मूलभूत अंतर है:
add_rewrite_rule()
एक कहते हैं खास नियम जो व्याख्या की है
add_rewrite_tag()
एक कहते हैं प्लेसहोल्डर यूआरएल संरचनाओं में उपयोग करने के लिए। इस प्लेसहोल्डर का उपयोग कई नियमों को उत्पन्न करने के लिए किया जाता है।
उदाहरण के लिए - मान लीजिए कि आप विभिन्न देशों के ट्रैवल एजेंट विज्ञापन होटल हैं। आप चाहते हैं कि होटल का url जैसा हो
www.example.com/hotels/UK/Balmoral
जहां देश (इस उदाहरण में यूके) एक कस्टम टैक्सोनी शब्द है और बाल्मोरल एक होटल (पोस्ट प्रकार) है। हम इसके लिए फिर से नियम जोड़ सकते हैं, लेकिन फिर हमें इसके लिए एक नियम बनाना होगा:
- होटल ही
- होटल के अनुलग्नक
- होटल (पोस्ट) के लिए एक नियम जहां यह कई पृष्ठों आदि पर फैलता है।
इन नियमों को बनाना जटिल हो सकता है। इसके अलावा हम संभवतः उस पोस्ट प्रकार के लिए वर्डप्रेस के अपने नियमों के साथ प्रतिस्पर्धा कर रहे होंगे - पोस्ट प्रकार को पंजीकृत करते समय हमारे द्वारा सेट किए गए परमैस्ट्रक्चर से उत्पन्न । (किसी भी स्थिति में, वर्डप्रेस को काम करने दें)।
यह 'पर्मैस्ट्रक्चर' - आप पर्मलिंक सेटिंग्स में पदों के लिए जो सेट करते हैं, उसके समान है - यह निर्धारित करता है कि वर्डप्रेस जेनरेट करता है। लेकिन जब से हम एक ऐसी संरचना चाहते हैं जिसमें कुछ अज्ञात (देश) है - जिसे हम व्याख्या करना चाहते हैं - हमें फॉर्म का एक प्लेसहोल्डर प्रदान करना होगा %country%
। (यह %category%
पदों के लिए लगभग समान है )।
उदाहरण के लिए:
add_action_init('init','wpse71305_register_types');
function wpse71305_register_types(){
//You'll need to register the country taxonomy here too.
//Add 'country' tag.
add_rewrite_tag('%country%', '([^&/]+)'));
//Register hotel post type with %country$ tag
$args = array(
...
'has_archive'=>true,
'rewrite' => array(
'slug'=>'hotels/%country%',
'with_front'=> false,
'feed'=> true,
'pages'=> true
)
...
);
register_post_type('hotel',$args);
}
नोट: वर्डप्रेस %country%
टैग से url जेनरेट करना नहीं जानता है - आपको यह बताने की जरूरत है कि ऐसा करें। (मैंने इसे नीचे दिए गए लेख में कवर किया है)।
अंत में वर्डप्रेस मिलान किए गए मूल्य को भी संग्रहीत करेगा ताकि आप इसे फिर से प्राप्त कर सकें get_query_var()
(कुछ आप मानक पुनर्लेखन नियम के साथ नहीं)।
आप टैग को पोस्ट के परमैस्ट्रक्चर में इस्तेमाल करने के लिए भी बना सकते हैं (इसे Permalink सेटिंग पेज में सेट करें)।
एक टैग जोड़कर, हम इसे पारमास्त्रक्ट्स में उपयोग कर सकते हैं। वर्डप्रेस तो जानता है
- क्या उम्मीद
- Url की व्याख्या कैसे करें (यह मेल खाता है)
- मान की व्याख्या कैसे करें (अर्थात 'यूके')
(जैसा कि संदर्भ इस लेख को मैंने देखा है: http://wp.tutsplus.com/tutorials/creative-coding/the-rewrite-api-the-basics/ )।
संपादित करें
जैसा कि टिप्पणियों में उल्लेख किया गया है उपरोक्त उदाहरण एक गरीब के रूप register_taxonomy()
में वास्तव में कॉल है add_rewrite_tag()
।
कोडेक्स प्रलेखन के बारे में 'संयोजन' में उनके उपयोग के बारे में: यह शायद भ्रामक है क्योंकि वे दोनों स्वतंत्र रूप से उपयोग किए जा सकते हैं। जैसा कि ऊपर उल्लेख किया गया है, हालांकि, add_rewrite_tag()
वर्डप्रेस को समझने के लिए टैग नाम जोड़ता है 'क्वेरी चर'। व्यवहार में यह आपको मूल्य को पुनः प्राप्त करने की अनुमति देता है get_query_var()
। इस प्रकार, जब add_rewrite_rule()
इसके साथ प्रयोग किया जाता है add_rewrite_tag()
, तो चर वर्डप्रेस द्वारा संग्रहीत किया जाएगा। लेकिन ऐसा करने के अन्य तरीके हैं ( इस उत्तर को देखें - नोट भी रोब वर्मर की टिप्पणी है)।
यह भी संबंधित: पुनर्लेखन यूआरएल से $ _GET चर कैसे प्राप्त करें?
add_rewrite_tag()
यह है कि इसका उपयोग प्लेसहोल्डर बनाने के लिए किया जा सकता हैSettings->Permalinks
। एक वर्गीकरण का उपयोग करने के बारे में, क्या यह उपयोग करने के लिए एक आवश्यकता हैadd_rewrite_tag()
? कोडेक्स पेज से मेरी धारणा यह है कि यह नहीं है, लेकिन आमतौर पर इसका इस्तेमाल होता है। मैंने कोडेक्स पेज में सुझाए गएadd_rewrite_tag()
संयोजन के साथ उपयोग करने के संबंध में अपने प्रश्न का विस्तार किया ।add_rewrite_rule()