वर्डप्रेस रीवाइट एपीआई

वर्डप्रेस एक बहुत ही उपयोगी एपीआई है जिसे “द” कहा जाता है एपीआई को फिर से लिखना“। मुझे लगता है कि पहले से ही “यूआरएल पुनर्लेखन” है, यह ऐसी प्रक्रिया है जो URLs को अधिक पठनीय बनाती है। उदाहरण के लिए इस तरह लिखा गया एक url http://mysite.com/?page=12&category=12&author=47 यह अच्छी बात नहीं है। इसे याद रखना कठिन है, और खोज इंजन इसे उतना पसंद नहीं करते हैं। यही कारण है कि लगभग हर सीएमएस में एक अंतर्निहित कार्य होता है, जिसे “फिर से लिखना” उन्हें इस तरह देखने के लिए आग्रह करता है: http://mysite.com/category/business/finance.


एपीआई और WP_Rrrite वर्ग को फिर से लिखना

वर्डप्रेस के अंदर, इस प्रक्रिया को के रूप में भी जाना जाता है पर्मलिंक संरचना. जब आप डिफ़ॉल्ट पर्मलिंक संरचना से एक कस्टम संरचना में स्विच करते हैं तो आप स्वचालित रूप से फिर से लिखना एपीआई को सक्रिय करते हैं। यह पूरी तरह से स्वचालित है। लेकिन कभी-कभी आपको अपने स्वयं के कस्टम रीराइट नियमों को बनाने की आवश्यकता होती है.

इस पोस्ट में, हम एक सरल कस्टम रीराइट नियम बनाने के लिए सरल कार्य करने जा रहे हैं। मान लें कि हम एक रेफरल मान प्राप्त करना चाहते हैं, $ _GET [r रेफ़रर] के बराबर की तरह.

यदि हम कोडेक्स पर एक नज़र डालते हैं, तो हम एपीआई के पुनर्लेखन पेज पर देख सकते हैं कि इस एपीआई में 6 बिलियन फ़ंक्शन हैं। पुनर्लेखन का सबसे आम उपयोग इन कार्यों का उपयोग करना है, इस बारे में बहुत सारे ट्यूटोरियल हैं, यही कारण है कि मैं फ़ंक्शन के बजाय फ़िल्टर का उपयोग करने जा रहा हूं। क्योंकि हां, रीराइट एपीआई का उपयोग फिल्टर के साथ भी किया जा सकता है! उन फिल्टरों को सूचीबद्ध किया गया है WP_Rewrite वर्ग कोडेक्स पेज.

एक नया क्वेरी वार जोड़ना

शुरू करने के लिए, हमें एक फ़ंक्शन बनाने की ज़रूरत है जो वर्डप्रेस को बताएगा कि एक नया फिर से लिखना नियम निर्धारित है। यह काम है add_rewrite_rule () तथा add_rewrite_tag ()  कार्य करता है, लेकिन आप इसे query_vars और का उपयोग करके भी कर सकते हैं rewrite_rules_array फिल्टर। ऐसा करने के लिए, हमें दो फ़ंक्शन और दो फ़िल्टर बनाने की आवश्यकता है। पहला कार्य केवल क्वेरी_वार्स फ़िल्टर में एक नया चर जोड़ने जा रहा है, और दूसरा इस नए चर को वैश्विक पुनर्लेखन नियमों में दर्ज करने जा रहा है:

/ *
|--------------------------------------------------------------------------
| फिर से शुरू करें। नमूना: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// एक नया संस्करण पंजीकृत करें
समारोह rc_add_query_vars ($ var) {
$ var [] = "रेफ़रर"; // का नाम जैसा URL में देखा गया है
$ $ वापसी;
}

// हमारे फ़ंक्शन को query_vars में हुक करें
add_filter ('query_vars', 'rc_add_query_vars');

// अस्तित्वों के लिए नया पुनर्लेखन नियम जोड़ें
फ़ंक्शन rc_add_rewrite_rules ($ नियम) {
$ new_rules = array ('रेफ़रर / ([^ /] +) /? $' => '' .php। रेफ़रर = $ मैच [1] ');
$ नियम = $ new_rules + $ नियम;
$ नियम वापस करें;
}

// फ़ंक्शन को rewrite_rules_array में हुक करें
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules);

एक बार जब आप इस कोड को अपनी किसी भी प्लगइन फाइल या अपने थीम फंक्शंस में जोड़ देते हैं। फाइल के लिए, सेटिंग्स> पर्मलिंक्स, और पर्मलिंक संरचना को बचा लेते हैं। इस कार्रवाई की जरूरत है। अब आपको इस तरह या url के साथ अपनी साइट तक पहुंचने में सक्षम होना चाहिए: http://mysite.com/referrer/your-name। यदि आप किसी विशिष्ट पृष्ठ पर पुनर्निर्देशित होना चाहते हैं, तो index.php? Referrer = $ माचिस [1] को index.php? Pagename = my-page & referrer = $ माचिस से खरीदें [1] जहाँ “my-page” पृष्ठ होना है स्लग में पुनर्निर्देशित.

चर मान को पुनः प्राप्त करना

अब जब आपका पुनर्लेखन नियम निर्धारित किया गया है, तो आप चर मान को एक्सेस करना चाह सकते हैं। लेकिन यदि आप एक साधारण $ _GET [er रेफ़रर] करते हैं, तो आपको कोई मूल्य नहीं मिलेगा। URL संस्करण मानों को पुनः प्राप्त करने के लिए, आपको एक फ़ंक्शन को “template_redirect” फ़िल्टर पर हुक करना होगा। “Init” फ़िल्टर के लिए हुकिंग बहुत जल्दी है। तब आप $ wp_query ऑब्जेक्ट के माध्यम से आवश्यक चर एक्सेस कर सकते हैं। यहाँ यह कैसे करना है का एक त्वरित नमूना है:

// URL संस्करण प्राप्त करें
फ़ंक्शन rc_get_my_vars () {
वैश्विक $ wp_query;

अगर (isset ($ wp_query-> query_vars ['referrer'])) {
$ रेफर = get_query_var ('रेफ़रर');
}
}

// फंक्शन को template_redirect में हुक करें
add_action ('template_redirect', 'rc_get_my_vars');

आप अगले $ रेफरर मूल्य को प्रतिध्वनित कर सकते हैं या इसका उपयोग कर सकते हैं जैसा कि एक सामान्य GET चर के साथ किया होगा.

आप निश्चित रूप से एक से अधिक चर का उपयोग संशोधित कर सकते हैं:

// में rc_add_query_vars ()
$ var [] = "रेफ़रर";
$ var [] = "अभियान";

// में rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ मैच [1] और अभियान = $ मैच [? 2] ');

यह मत भूलो कि आपको PHP mod_rewrite मॉड्यूल की आवश्यकता है जो url पुनर्लेखन का उपयोग करने में सक्षम है.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me