Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. WordPress
Code

WordPress एडमिन नोटिस पर्सिस्ट: भाग 2

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Persisted WordPress Admin Notices.
Persisted WordPress Admin Notices: Part 1
Persisted WordPress Admin Notices: Part 3

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

इस श्रृंखला के भाग एक में, हमने सीखा है कि प्रत्येक WordPress एडमिन पेज के शीर्ष पर दिखाई देने वाली बेसिक एडमिन नोटिस को कैसे इम्प्लीमेंट किया जाए। इस ट्यूटोरियल में, हम अपने सभी कस्टम एडमिन नोटिस कोड को शामिल करने के लिए एक प्लगइन बनाना शुरू कर देंगे।

हम स्टैण्डर्ड एडमिन नोटिस को लागू करके शुरू करेंगे और उन्हें अधिक लचीला और उन्नत उदाहरणों के लिए आधार के रूप में उपयोग करेंगे।

हमारे प्लगइन को सेटअप करना

सबसे पहले, आइए, स्क्रैच से एक नया प्लगइन इनस्टॉल करें जो हम अपने सभी एडमिन नोटिस के लिए उपयोग करेंगे, इसलिए हम कोड एंटर करना शुरू करने के लिए तैयार हैं।

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

admin_notices नामक एक नया प्लगइन फ़ोल्डर बनाएं /wp-content/plugins/, और फिर admin_notices.php फ़ाइल बनाएं जो मुख्य प्लगइन फ़ाइल होगी।

अपने पसंदीदा एडिटर में admin_notices.php खोलें और बेसिक प्लगइन संरचना जोड़ें:

हमने एक बेसिक प्लगइन हेडर जोड़ा ताकि WordPress हमारी प्लगइन को पहचान सके। इसके बाद एक क्लास होती है जिसमें हमारे एडमिन नोटिस डिस्प्ले करने के तरीके शामिल होंगे।

मैंने क्लास Gwyer_Admin_Notices को यथासंभव यूनिक बनाने और इसे ट्राय के लिए नाम दिया है। इस तरह, मौजूदा क्लास नाम के साथ कनफ्लिक्ट करने की संभावना बहुत कम है।

आइए बेसिक एडमिन नोटिस डिस्प्ले करके शुरू करें, और फिर इसे और अधिक उपयोगी बनाने के लिए इसमें जोड़ें। एडमिन नोटिस बनाने के लिए, init() फ़ंक्शन में admin_notices हुक जोड़ें:

हुक में test_notice कॉलबैक फ़ंक्शन शामिल है जिसका उपयोग एडमिन नोटिस मार्कअप को आउटपुट करने के लिए किया जाएगा।

वास्तविक एडमिन नोटिस डिस्प्ले करने के लिए निम्न क्लास मेथड Gwyer_Admin_Notices में जोड़ें। संदेशों के लिए, हम पिछले 100 वर्षों की फिल्मों से क्लासिक मूवी कोट्स का उपयोग करेंगे।

टेस्ट नोटिस दिखाने के लिए प्लगइन को सक्रिय करें।

Adding a basic admin notice to our plugin

चलिए अन्य प्रकार के एडमिन नोटिस के उदाहरण भी जोड़ते हैं जिन्हें हम डिसमिस होने वाले टाइप CSS क्लास is-dismissible जोड़कर डिस्प्ले कर सकते हैं। मौजूदा एडमिन नोटिस div के नीचे test_notice() मेथड में इन्हें जोड़ें:

Full set of admin notice types

यह एडमिन नोटिस टाइप्स की पूरी श्रृंखला है जिसे हम WordPress कोर CSS क्लासेज के माध्यम से डिस्प्ले कर सकते हैं। याद रखें, हालांकि, डिसमिस एडमिन नोटिस प्रत्येक page  लोड पर फिर से दिखाई देगा!

इस कॉन्टेक्स्ट में 'Dismissible' एडमिन नोटिस का मतलब केवल वर्तमान पेज के लिए है। लगातार एडमिन नोटिस रखना बहुत लचीला नहीं है, इसलिए बाद में हम विशेष रूप से विभिन्न तरीकों को देखेंगे जिससे आप अपने एडमिन नोटिस को प्रभावी ढंग से डिसमिस कर सकते हैं।

एडमिन नोटिस हुक

अब तक, हमने केवल एडमिन नोटिस लागू करने के लिए admin_notice हुक का उपयोग किया है। वास्तव में चार अलग-अलग एडमिन नोटिस हुक हैं जिन्हें आप नोटिफिकेशन डिस्प्ले करने के लिए उपयोग कर सकते हैं, लेकिन admin_notice सबसे अधिक उपयोग किया जाता है।

उपलब्ध चार हुक हैं:

  • admin_notices (ज्यादातर परिस्थितियों में उपयोग किया जाता है)
  • network_admin_notices
  • all_admin_notices*
  • user_admin_notices*

*वर्तमान में इन हुकों के लिए कोई आधिकारिक डॉक्यूमेंटेशन उपलब्ध नहीं है।

तो आप आमतौर पर all_admin_notices, user_admin_notices, और network_admin_notices कहां उपयोग करेंगे? और वे admin_notices से अलग कैसे होते हैं?

मैंने पहले कहा था कि admin_notices हुक सभी admin pages पर नोटिफिकेशन्स डिस्प्ले करता है, लेकिन यह सख्ती से सच नहीं है। यदि आप WordPress कोर में admin-header.php पर एक नज़र डालें, तो आप देखेंगे कि admin_notices, network_admin_notices, और user_admin_notices पारस्परिक रूप से एक्सक्लूसिव हैं। यही है, इन हुकों में से केवल एक WordPress एडमिन पेज पर फायर होते है।

कंडीशनल एक्सप्रेशंस की एक श्रृंखला वर्तमान एडमिन पेज का मूल्यांकन करती है और वर्तमान में उस एडमिन पेज के प्रकार के आधार पर उनमें से केवल एक को फायर करती है।

सबसे पहले, is_network_admin() यह देखने के लिए जांच करता है कि आप नेटवर्क एडमिन स्क्रीन पर हैं (e.g. कोई एडमिन पेज /wp-admin/network/ URL पर आधारित है)। यदि ऐसा है, तो network_admin_notices हुक फायर होगा।

अन्यथा, is_user_admin() यह देखने के लिए जांच करता है कि आप यूजर एडमिन स्क्रीन पर हैं (e.g. कोई एडमिन पेज /wp-admin/user/ URL पर आधारित है)। यदि ऐसा है, तो user_admin_notices हुक फायर होगा।

और, जैसा कि आपने अनुमान लगाया होगा, यदि दोनों is_network_admin() और is_user_admin() false return करते हैं तो admin_notices हुक फायर होता है।

यह सिर्फ all_admin_notices हुक छोड़ देता है। यह हुक ऊपर चर्चा की कंडीशनल एक्सप्रेशन का हिस्सा नहीं है, इसलिए इस हुक को सभी एडमिन पेजेज पर डिस्प्ले करने की गारंटी है, चाहे मल्टीसाइट नेटवर्क एडमिन पेजेज सहित।

किसी भी WordPress एडमिन पेज के लिए स्पष्टीकरण के लिए, केवल all_admin_notices हुक हमेशा आग लगने की गारंटी है। अन्य तीन हुकों में से, केवल उस एडमिन पेज के आधार पर फायर किया जाएगा जो आप वर्तमान में कर रहे हैं।

मैं आपको admin-header.php (फ़ाइल के अंत में) पर एक नज़र डालने के लिए प्रोत्साहित करता हूं ताकि यह देख सकें कि WordPress मूल्यांकन करता है कि प्रत्येक एडमिन नोटिस हुक का उपयोग कब किया जाए।

हम केवल इस ट्यूटोरियल श्रृंखला में admin_notices का उपयोग करेंगे, लेकिन आपको लगता है कि आपको अपने स्वयं के प्रोजेक्ट में कुछ अन्य हुक की आवश्यकता हो, तो यह जांचना उचित है।

विशिष्ट पेजेज पर एडमिन नोटिस डिस्प्ले करना

चलिए विशिष्ट पेजेज पर एडमिन नोटिस डिस्प्ले करने के लिए अब अपना ध्यान बदल दें। सबसे पहले, add_action को कॉल पर कमेंट करें ताकि हमारी टेस्ट नोटिस अब डिस्प्ले न हों।

Init() के अंदर, एक नया add_action() कॉल जोड़ें जिसे हम एक विशिष्ट एडमिन पेज पर एक एडमिन नोटिस डिस्प्ले करने के लिए उपयोग करेंगे।

फिर specific_admin_page() मेथड को निम्नानुसार परिभाषित करें:

अपने परिवर्तनों को सेव करें और WordPress एडमिन में किसी भी पेज को देखें। मैं मुख्य डैशबोर्ड पेज आज़माउंगा।

Dashboard admin notice

जैसा कि आप देख सकते हैं, आपके द्वारा देखे जाने वाले किसी भी एडमिन पेज के लिए, पेज का (आधार) नाम एडमिन नोटिस में डिस्प्ले किया जा रहा है।

get_current_screen() फ़ंक्शन वर्तमान एडमिन स्क्रीन के विवरण के साथ एक WP_Screen ऑब्जेक्ट देता है। विशेष ऑब्जेक्ट प्रॉपर्टी जिसमें हम रुचि रखते हैं वह WP_Screen->base है, जो वर्तमान स्क्रीन के मूल प्रकार का मूल्यांकन करता है। WP_Screen->base के लिए कौन से मान लौटाए जाते हैं यह देखने के लिए विभिन्न WordPress एडमिन पेजेज को लोड करने का प्रयास करें।

हम केवल मूल डैशबोर्ड पेज पर हमारे एडमिन नोटिस को कण्डीशनली लोड करने के लिए बेस वैल्यू का उपयोग कर सकते हैं। जिस वैल्यू को हमे जांचने की आवश्यकता है वह dashboard है। अगर हम एडमिन डैशबोर्ड पेज पर नहीं हैं तो चलिए एक वैकल्पिक एडमिन नोटिस भी दिखाएं। specific_admin_page() की अपनी परिभाषा को इसके साथ बदलें:

Output base name of current admin page in the admin notice

सब कुछ ठीक है जब हम डैशबोर्ड पेज पर होते हैं, लेकिन किसी अन्य एडमिन पेज पर नेविगेट करने का प्रयास करें और देखें कि क्या होता है।

Error type admin notice shown when were not on the expected admin page

विशिष्ट एडमिन पेजेज पर एडमिन नोटिस डिस्प्ले करते समय इस सरल दृष्टिकोण का उपयोग करके हमें काफी लचीलापन मिलता है। हम इसे आसानी से विस्तारित करने के लिए किसी भी ऐसे एडमिन पेजेज को वाइटलिस्ट में विस्तारित कर सकते हैं, जिन्हें हम एडमिन नोटिस दिखाना चाहते हैं।

एक बार फिर, निम्न कोड के साथ, इस समय specific_admin_pages() फ़ंक्शन को रीप्लेस करें:

एक एडमिन पेज की जांच करने के बजाय, अब हम यह देखने के लिए जांचते हैं कि वर्तमान एडमिन पेज का मूल नाम $whitelist_admin_pages array में है या नहीं। जब हम डैशबोर्ड, मीडिया लाइब्रेरी या कमैंट्स के एडमिन पेजेज पर नेविगेट करते हैं, तो हम अपना सक्सेस एडमिन नोटिस देखते हैं।

Our success message shows on the admin comments page

और जब हम किसी अन्य एडमिन पेज पर जाते हैं (हमारी वाइटलिस्ट ऐरे में शामिल नहीं है), तो हम एक वैकल्पिक एडमिन नोटिस देखते हैं।

Only allowed admin pages show the success message

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

admin-notice प्लगइन फ़ोल्डर के अंदर plugin-options.php नामक एक नई फ़ाइल बनाएं जिसे हमने पहले जोड़ा था, और निम्न कोड जोड़ें:

admin-notices.php (क्लास डिक्लेरेशन के ऊपर सीधे) के शीर्ष पर, प्लगइन ऑप्शन क्लास को मुख्य प्लगइन फ़ाइल में शामिल करें:

मैं plugin-options.php में कोड कैसे काम करता है इस बारे में बहुत अधिक जानकारी नहीं दे रहा हूं क्योंकि यह एक संपूर्ण ट्यूटोरियल हो सकता है! यदि आप रीफ्रेशर चाहते हैं तो मैं प्लगइन ऑप्शन पेजेज को जोड़ने पर WordPress कोडेक्स पेज पर एक नज़र डालने की सलाह दूंगा।

असल में, हम जो भी कर रहे हैं वह Settings मेनू में एक नया Admin Notices सबपेज जोड़ रहा है। प्लगइन ऑप्शन पेज में स्वयं एक सिंगल टेक्स्ट फ़ील्ड होती है जिसमें आप एक स्ट्रिंग एंटर कर सकते हैं। जब Save Changes बटन क्लिक किया जाता है, तो टेक्स्ट फ़ील्ड के कंटेंट WordPress डेटाबेस में सेव हो जाते है।

यह केवल प्रदर्शन के लिए प्लगइन सेटिंग्स पेज का एक bare-bones उदाहरण है। इसमें सामान्य रिलीज के लिए प्रोडक्शन प्लगइन के लिए सोची गयी आवश्यक sanitization या translation फ़ंक्शन शामिल नहीं हैं।

प्लगइन ऑप्शन पेज देखने के लिए Settings > Admin Notices पर जाएं।

Plugin options page

जैसा कि अपेक्षित है, एडमिन नोटिस हमने पहले हमारे प्लगइन ऑप्शन पेज पर डिस्प्ले किया था। एरर संदेश डिस्प्ले होता है क्योंकि हमारे प्लगइन ऑप्शन पेज अनुमित एडमिन पेजेज की $whitelist_admin_pages ऐरे में नहीं हैं। आइए अब इसे ठीक करें।

हमारे ऑप्शन पेज को ऐरे में जोड़ने के लिए, हमें बेस नाम जानने की आवश्यकता है। specific_admin_page() के अंदर, एरर एडमिन नोटिस div को निम्न में बदलें:

हमें अभी भी वही एरर एडमिन नोटिस पहले जैसा मिलता है, लेकिन इस बार इसमें हमें आवश्यक आधार नाम शामिल है, जो settings_page_admin-notices/plugin-options बन जाता है। यह एक ऐसा नाम नहीं है जिसे हम आसानी से अनुमान लगा सकते थे, इसलिए इसे आउटपुट करने के लिए समय निकालना उचित था!

बेस नाम $whitelist_admin_pages ऐरे में जोड़ें, जो अब इस तरह दिखना चाहिए:

अपडेट किये गए एडमिन नोटिस देखने के लिए प्लगइन ऑप्शन पेज को रीफ्रेश करें।

Updated admin notice

अब जब हम प्लगइन ऑप्शन पेज का बेस नाम जानते हैं, तो हम आसानी से एक एडमिन नोटिस बना सकते हैं जो केवल उस एडमिन पेज पर डिस्प्ले होता है। $whitelist_admin_pages ऐरे से settings_page_admin-notices/plugin-options निकालें और init() में दूसरे add_action फ़ंक्शन कॉल को कमेंट करें। फिर एक तीसरा एक्शन जोड़ें जो हम अपने प्लगइन ऑप्शन पेज के लिए केवल एडमिन नोटिस के लिए उपयोग करेंगे। आपका init() फ़ंक्शन अब इस तरह दिखना चाहिए:

आइए अब plugin_admin_notice() कॉलबैक फ़ंक्शन को बाहर निकालें। इस नए मेथड को Gwyer_Admin_Notices क्लास में जोड़ें:

यह specific_admin_page() के समान है, सिवाय इसके कि हमने कंडीशनल एक्सप्रेशन को हटा दिया है। हमने is-dismissible CSS क्लास जोड़कर एक डिसमिस बटन भी जोड़ा है, इसलिए एडमिन नोटिस अब भी बंद हो सकता है।

Plugin options page only admin notice

अन्य एडमिन पेजेज को लोड करने का प्रयास करें यह कन्फर्म करने के लिए कि एडमिन नोटिस केवल प्लगइन ऑप्शन पेज पर डिस्प्ले होता है।

निष्कर्ष

इस ट्यूटोरियल में, हमने एडमिन नोटिस और उन्हें डिस्प्ले करने के लिए उपलब्ध विभिन्न हुक के बारे में और कुछ सीखा। हम WordPress एडमिन के स्पेसिफिक पेजेज पर केवल एडमिन नोटिस को डिस्प्ले करने के तरीके को भी कवर करते हैं। हमने सभी कस्टम एडमिन नोटिस कोड रखने के लिए एक समर्पित प्लगइन डेवलप किया है।

भाग तीन में, हम कुछ इवेंट्स के दौरान एडमिन नोटिस को ट्रिगर करने के तरीके को दिखाकर प्लगइन का विस्तार करेंगे। याद रखें, WordPress की ओपन-सोर्स प्रकृति सीखना और विस्तार करना आसान बनाता है। इसके लिए, यदि आप उत्सुक हैं तो हमारे पास Envato Market में समीक्षा और अध्ययन करने के लिए बहुत कुछ है।

इसके बाद हम यह पता लगाने के लिए अपना ध्यान लगाएंगे कि हम लगातार एडमिन नोटिस समस्या को कैसे हल कर सकते हैं ताकि पेज रीफ्रेश होने पर वे फिर से दिखाई न दें। हम इसे करने के लिए अनुमति देने के लिए हमारी कस्टम प्लगइन में कई अलग-अलग तरीकों को लागू करेंगे।

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.