WordPress प्लग़ेबल फंक्शन्स और उनके उपयोग को समझना
Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)
WordPress प्लग़ेबल नामक कोर फ़ंक्शंस का संग्रह प्रदान करता है। जैसा कि नाम से पता चलता है, हम इन फंक्शन्स के लिए हमारी आवश्यकताओं के अनुसार अपनी फंक्शनलिटी को ओवरराइड और बढ़ाने के लिए कस्टम कोड प्लग कर सकते हैं।
प्लग़ेबल फंक्शन्स की वास्तविक शक्ति कस्टम फंक्शन्स को डिक्लेअर करने और उन्हें अन्य डेवलपर्स और डिजाइनरों के लिए प्लग़ेबल बनाने की क्षमता के साथ आता है। WordPress चाइल्ड थीम्स की फंक्शनलिटी और फीचर्स को विस्तारित करने में यह व्यापक रूप से उपयोग की जाने वाली तकनीक है।
इस लेख के दौरान हम प्लग़ेबल फंक्शन्स और उनके उपयोग की अवधारणा का पता लगाने जा रहे हैं।
WordPress कोर में प्लग़ेबल फंक्शन्स का उपयोग करना
WordPress कोर में प्लग़ेबल फ़ंक्शन wp-include डायरेक्टरी के अंदर pluggable.php फ़ाइल में स्थित हैं। आप WordPress कोडेक्स Pluggable Functions के तहत प्लग़ेबल फंक्शन्स की पूरी सूची पा सकते हैं। सबसे पहले मैं आपको प्लग़ेबल फंक्शन्स की एक सूची दिखाऊंगा जिसका उपयोग लगभग हर WordPress वेबसाइट में किया जा सकता है।
-
wp_logout
- यूजर को सिस्टम से लॉग आउट करने के लिए प्रयोग किया जाता है। आप एक कस्टमwp_logout
फ़ंक्शन लिखकर कस्टम सेशन वेरिएबल को हटाने और डेटाबेस सेशन में यूजर सेशन टाइम रिकॉर्ड करने जैसे कार्य कर सकते हैं। -
wp_mail
- इन सभी में सबसे लोकप्रिय प्लगिंग फंक्शन है। आप इस ईमेल को अपने ईमेल या किसी अन्य ईमेल भेजने-संबंधित प्रॉपर्टी के लिए एक विशेष ईमेल टेम्पलेट का उपयोग करने के लिए मॉडिफाई कर सकते हैं। -
wp_new_user_notification
- सिस्टम के साथ एक नए यूजर के रजिस्टर होने के बाद भेजे गए ईमेल के फॉर्मेट को कस्टमाइज करने के लिए उपयोग किया जा सकता है। -
auth_redirect
- यूजर को लॉग इन पेज पर रीडायरेक्ट करने के लिए प्रयोग किया जाता है यदि यूजर पहले से लॉग इन नहीं है। आप इस फ़ंक्शन का उपयोग यूजर को यह मैसेज दिखाने के लिए कर सकते हैं कि यूजर रेक्वेस्टेड पेज तक पहुंचने के लिए ऑथेंटिकेट होना चाहिए। -
wp_password_change_notification
- पासवर्ड बदलते समय ईमेल भेजने के लिए उपयोग किया जाता है। आप इस फ़ंक्शन का उपयोग करके इस ईमेल में अतिरिक्त जानकारी जोड़ सकते हैं।
अब देखते हैं कि हम उपर्युक्त फंक्शन्स में से एक में कस्टम फ़ंक्शन कैसे प्लग कर सकते हैं। मैं यहां wp_logout
का उपयोग करूंगा। सबसे पहले आपको pluggable.php फ़ाइल खोलनी होगी और wp_logout
फ़ंक्शन की कंटेंट को कॉपी करना होगा। फिर उसी फ़ाइल के साथ अपनी फ़ाइल में एक नया फ़ंक्शन बनाएं और कोड शामिल करें। wp_logout
के लिए डिफ़ॉल्ट फ़ंक्शन निम्न है:
if ( ! function_exists( 'wp_logout' ) ) { /** * Log the current user out. * * @since 2.5.0 */ function wp_logout() { wp_clear_auth_cookie(); do_action( 'wp_logout' ); } }
अब wp_logout
फ़ंक्शन के ओवरराइड वर्जन को देखें:
if ( ! function_exists( 'wp_logout' ) ) { /** * Log the current user out. * * @since 2.5.0 */ function wp_logout() { remove_sessions() ; // Custom Function Call wp_clear_auth_cookie(); do_action( 'wp_logout' ); } function remove_sessions() { // Remove custom session and cookie information } }
आप देख सकते हैं कि मैंने अपनी प्लगइन में wp_logout
फ़ंक्शन को मॉडिफाई किया है और कुछ कस्टम कोड जोड़े हैं। एक प्लग़ेबल फंक्शन को ओवरराइड करने के लिए आपको यह प्रोसेस करने की आवश्यकता है।
उपर्युक्त कोड में महत्वपूर्ण बात यह है कि if ( ! function_exists ( 'wp_logout' ) ) {
शीर्ष पर परिभाषित लाइन है। यह लाइन आपके फ़ंक्शन को प्लग करके प्लग़ेबल बनाती है कि wp_logout
नामक फ़ंक्शन मौजूद है या कस्टम फ़ंक्शन लोड करता है। अन्यथा यह pluggable.php में डिफ़ॉल्ट फ़ंक्शन लोड करेगा।
आप सोच रहे होंगे कि प्लगइन में फ़ंक्शन को क्यों कॉल किया जाता है बजाय डिफ़ॉल्ट के, भले ही दोनों फ़ंक्शंस function_exists('wp_logout')
स्थिति के साथ प्रीफिक्स किए जाते हैं। यह WordPress एक्शन एक्सेक्यूशन कमांड के कारण है, जिसे मैं बाद में समझाऊंगा।
क्या function_exists
को छोड़ना संभव है कस्टम फ़ंक्शन के लिए जांचें?
हाँ यह संभव है। लेकिन यदि आप चेक छोड़ देते हैं तो आपको निम्नलिखित दो सिनेरियो में समस्याएं होंगी।
- प्लगइन एक्टिवेशन - जब आप चेक किये बिना प्लगइन के अंदर एक प्लग़ेबल फ़ंक्शन को ओवरराइड करते हैं और फ़ंक्शन को एक्टिव करने का प्रयास करते हैं, तो यह एक एरर जेनेरेट करेगा "Cannot redeclare wp_logout()"। यदि आप एक्टिवेशन के बाद चेक हटा देते हैं तो यह ठीक से काम करेगा।
- किसी अन्य प्लगइन में डुप्लिकेट फ़ंक्शन - एक संभावना है कि एक अन्य प्लगइन ऑथर कंडीशन चेक के बिना एक ही फ़ंक्शन को ओवरराइड करता है। ऐसे मामलों में एक कनफ्लिक्ट होगा क्योंकि दोनों फंक्शन्स एक ही नाम में होंगे और तो एक एरर जेनेरेट होगा।
यहां जोखिम यह है कि कोई भी आपके जानकारी के बिना आपके फंक्शन को ओवरराइड कर सकता है। मुझे लगता है कि कनफ्लिक्ट से बचने के लिए आपको फ़ंक्शन से पहले हमेशा कंडीशन की जांच करनी चाहिए।
अब आप जानते हैं कि प्लग़ेबल फंक्शन्स के साथ कैसे काम करना है। तो देखते हैं कि हम प्लग़ेबल फंक्शन्स को कहां रख सकते हैं।
प्लग़ेबल फंक्शन एक्सेक्यूशन प्रोसेस
मैंने कई डेवलपर्स को एक थीम की functions.php फ़ाइल में प्लग़ेबल फंक्शन्स के साथ देखा है और वे अपनी मर्जी के परिणाम प्राप्त नहीं कर रहे हैं। प्लग़ेबल फंक्शन्स को बनाने से पहले आपको WordPress एक्शन एक्सेक्यूशन कमांड का उचित ज्ञान होना चाहिए।
आप WordPress कोडेक्स में Action Reference के तहत पूर्ण एक्सेक्यूशन प्रोसेस पा सकते हैं। मैं नीचे दी गई स्क्रीन में अपनी एक्सप्लनेशन के लिए आवश्यक एक्शन्स को निकाल दूंगा।
उपरोक्त इमेज सामान्य WordPress एक्शन एक्सेक्यूशन प्रोसेस दिखाती है। यह आपकी प्लगइन में उपयोग की जाने वाली फंक्शनलिटी के प्रकार के अनिसार अलग हो सकता है और रिक्वेस्ट के दौरान इन एक्शन्स को कई बार कॉल किया जा सकता है।
आपको स्पष्ट रूप से देखना चाहिए कि "must use" प्लगइन्स पहले लोड किए जाते हैं, इसके बाद एक्टिव प्लगइन्स और प्लग़ेबल फ़ंक्शंस होते हैं। अंत में थीम लोड हो जाती है। तो प्रोसेस के अनुसार हम प्लग़ेबल फंक्शन्स को बनाने पर निम्नलिखित निष्कर्ष निकाल सकते हैं।
- सभी कस्टम प्लग़ेबल फंक्शन्स को प्लगइन के अंदर रखा जाना चाहिए क्योंकि प्लगइन्स पहले लोड होते हैं।
- यदि प्लगइन्स में प्लग़ेबल फ़ंक्शन नहीं हैं, तो डिफ़ॉल्ट कोर फ़ंक्शन का उपयोग किया जाएगा।
- प्लग़ेबल फंक्शन्स के बाद थीम लोड होने के बाद से आपको अपनी थीम फ़ाइलों में कोर प्लगिंग फ़ंक्शंस ओवरराइड नहीं करना चाहिए। इसलिए डिफ़ॉल्ट फ़ंक्शन का उपयोग किया जाएगा।
अब आप जानते हैं कि अपने प्लग़ेबल फंक्शन्स को कहां रखा जाए। अगला प्रश्न तब होगा जब दो या दो से अधिक प्लगइन एक ही कोर फ़ंक्शन को ओवरराइड करते हैं। यह आपके नियंत्रण से बाहर है क्योंकि पहले एक्टिव प्लगइन को दूसरों पर वरीयता मिलेगी। तो यदि आपके प्लगइन से पहले कोई और प्लगइन एक्टिव है, तो आपके प्लग़ेबल फ़ंक्शन का उपयोग नहीं किया जाएगा।
WordPress ऑप्शन टेबल में active_plugins
key की वैल्यू का उपयोग करके आप एक्टिव प्लगइन ऑर्डर देख सकते हैं।
प्लग़ेबल फंक्शन्स का महत्व
कोर प्लग़ेबल फंक्शन्स को ओवरराइड करने से हमें डिफ़ॉल्ट फंक्शनलिटी का विस्तार करने और कुछ सिनेरियो में बहुत उपयोगी बनाने की अनुमति मिलती है। लेकिन प्लग-इन फंक्शन्स का वास्तविक वैल्यू तब आती है जब आप अपना खुद का प्लग-इन फ़ंक्शन बनाते हैं। इन फंक्शन्स के कोर फंक्शन्स के साथ कोई संबंध नहीं होगा।
आम तौर पर नए प्लग़ेबल फंक्शन्स को आपकी WordPress थीम में इसकी फंक्शनलिटी बढ़ाने के लिए परिभाषित किया जाता है और चाइल्ड थीम डेवलपर्स को ओवरराइड करने की अनुमति मिलती है। तो देखते हैं कि हम कस्टम प्लग़ेबल फंक्शन्स को कैसे परिभाषित कर सकते हैं।
कस्टम प्लग़ेबल फंक्शन्स का निर्माण
सबसे पहले आपको एक फ़ंक्शन को एक एक्सिस्टेंस जांच के साथ बनाना होगा जैसा हमने कोर फ़ंक्शंस के साथ किया था। निम्नलिखित कोड आपकी थीम के लिए सैंपल प्लग़ेबल फ़ंक्शन दिखाता है:
if ( ! function_exists( 'change_header' ) ) { function change_header() { // Code for changing theme header } }
इससे पहले मैंने डिफ़ॉल्ट प्लगिंग फंक्शन्स के साथ डिपेंडेंसी के कारण थीम फ़ाइलों में प्लग़ेबल फंक्शन्स को न बनाने का उल्लेख किया था। इस सिनेरियो में हम नए प्लगिंग फंक्शन्स को बना रहे हैं और इसलिए कोई डिपेंडेंसी नहीं होगी। तो एक्शन एक्सेक्यूशन प्रोसेस का आम तौर पर प्रभाव नहीं पड़ेगा।
प्लग़ेबल फंक्शन्स का उपयोग कब करें?
हम डेवेलपर्स और डिज़ाइनर को अनुमति देने के लिए चाइल्ड थीम बनाते हैं ताकि वे पैरेंट थीम के डिज़ाइन और फीचर्स को एक्सटेंड कर सकें वो भी ओरिजिनल थीम के सोर्स कोड को बदले बिना। एक्सटेंट के बेसिक फॉर्म को चाइल्ड थीम के अंदर पैरेंट थीम के CSS को डुप्लिकेट करके और आवश्यक कस्टमायज़ेशन करने के द्वारा प्रदान किया जा सकता है।
CSS स्टाइल्स के अलावा, थीम्स में डिज़ाइन एलिमेंट प्रदान करने के लिए शॉर्टकोड, पेज टेम्पलेट्स और कस्टम फ़िल्टर जैसे उपयोगी फ़ंक्शन शामिल हो सकते हैं। थीम डेवलपर्स के रूप में, हमें चिलक थीम डेवलपर्स के लिए अधिकतम क्षमता प्रदान करने की आवश्यकता है। हम चाइल्ड थीम डेवलपर्स को इन फंक्शनलिटीओं को मॉडिफाई करने के लिए प्लग़ेबल फंक्शन्स का प्रभावी ढंग से उपयोग कर सकते हैं।
तो अधिकतम एक्सटें करने की एबिलिटी की अनुमति देने के लिए आवश्यक होने पर अपने मौजूदा थीम फ़ंक्शंस को प्लग़ेबल फंक्शन्स में कनवर्ट करना सुनिश्चित करें।
सारांश
WordPress प्लग़ेबल फंक्शन्स के कांसेप्ट आपको अपने थीम और प्लगइन की फंक्शनलिटी को एक्सटेंड करने की अनुमति देते है। आम तौर पर प्लगइन में WordPress कोर प्लग़ेबल फंक्शन्स को ओवरराइड करना और थीम्स में अपने स्वयं के प्लग़ेबल फंक्शन्स को ओवरराइड करना बेहतर होता है। कनफ्लिक्ट से बचने के लिए प्लग़ेबल फंक्शन्स को बनाने से पहले WordPress एक्शन एक्सेक्यूशन सीक्वेंस की उचित समझ प्राप्त करना सुनिश्चित करें।
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weekly