जब add_rewrite_tag () का उपयोग किया जाना चाहिए?


22

मैंने कुछ दिन बिताने की कोशिश की है कि कैसे फिर से लिखना नियमों को सर्वोत्तम रूप से सीखने की कोशिश की जाए। अब तक मेरी समझ यह है कि साधारण नियमों को जोड़ने का एक उपयुक्त तरीका यह है कि इस आदान-प्रदान पर जन फैब्री केadd_rewrite_rules() लिए बड़े धन्यवाद के साथ, जिनके विस्तृत उपयोग हैं।

यद्यपि वह उल्लेख करता है कि add_rewrite_tags()मैंने इस पर एक मार्गदर्शक को यह बताते हुए नहीं देखा कि इसका उपयोग करना कब फायदेमंद है, जैसा कि पुनर्लेखन नियमों को जोड़ने के अन्य तरीकों के विपरीत, या इसके उपयोग पर कोई अच्छा उदाहरण है। यह एक अधिक शक्तिशाली उपकरण प्रतीत होता है, लेकिन यह मेरे बारे में है कि मैं थाह ले सकता हूं। मुझे लगता है कि कोडेक्स में उदाहरण बहुत अधिक गूढ़ या अपूर्ण हैं । क्या कोई इस पर विस्तार कर सकता है या किसी संसाधन की ओर इशारा कर सकता है? मुझे Google पर कुछ भी उपयोगी नहीं मिला।

संपादित करें: इसका कोडेक्स पेज 'आम तौर पर' के साथ संयोजन के रूप में उपयोग करने के बारे में बातadd_rewrite_rules()करता है, लेकिन विस्तृत नहीं है। इसी तरह कोडेक्स पेज के लिएadd_rewrite_rules()के लिए संदर्भित करताadd_rewrite_tags()है, लेकिन यह भी सूचना के आधार पर बहुत विरल है। इस तरह के संयोजन का उपयोग कब और कैसे किया जाएगा? एकमात्र उदाहरण जो मुझे मिला वह रोब वर्मियर द्वारा दिया गया उत्तर है जिसे मैं नहीं समझता।

जवाबों:


21

मूलभूत अंतर है:

  • 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()
सीरोन

आप टैक्सोनोमीज़ के बारे में बिल्कुल सही हैं (मेरी ओर से एक बुरा उदाहरण)। के इस भाग को देखें register_taxonomy()। एक बेहतर उदाहरण तब होगा जब आप कुछ का उपयोग करना चाहते हैं, %country%लेकिन जब देश सिर्फ एक क्वेरी चर है और एक वर्गीकरण नहीं है। ये मामले दुर्लभ हैं - मैंने कभी उपयोग नहीं किया add_rewrite_tag()
स्टीफन हैरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.