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

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

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

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

परसिस्टेड WordPress एडमिन नोटिस पर हमारी श्रृंखला में आपका स्वागत है। जब हम पेज पर दिखाई देते हैं तो हम अब हमारी एडमिन सूचना कार्यक्षमता और नियंत्रण को बढ़ाने में सक्षम होने के लिए एक अच्छी स्थिति में हैं।

इसके बाद, हम लगातार एडमिन नोटिस पर आगे बढ़ेंगे और देखेंगे कि आप यह सुनिश्चित कर सकते हैं कि उन्हें इस तरह से डिसमिस कर दिया गया है कि जब वे एडमिन पेज पुनः लोड होते हैं तो वे फिर से प्रकट नहीं होते हैं।

यह विशेष रूप से महत्वपूर्ण है क्योंकि प्लगइन और थीम में लागू कस्टम एडमिन नोटिस केवल वास्तव में उपयोगी होते हैं जब आप उन्हें स्थायी रूप से डिसमिस कर सकते हैं। यह is-dismissible CSS क्लास जोड़ने के लिए पर्याप्त नहीं है।

जब एडमिन नोटिस दिखाई देते हैं तो नियंत्रित करना

अब तक, पेज लोड होने के तुरंत बाद सभी एडमिन नोटिस डिस्प्ले किए गए हैं। कई बार ऐसा असुविधाजनक हो सकता है और आप चाहते हैं कि एक निश्चित ईवेंट ट्रिगर किए जाने के बाद एडमिन नोटिस डिस्प्ले हो।

अगर हम पहले से बनाए गए प्लगइन ऑप्शन पेज पर एक कस्टम एडमिन नोटिस डिस्प्ले करना चाहते थे, तो इसके बारे में क्या, लेकिन केवल Save Changes बटन क्लिक करने के बाद ही?

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

plugin_admin_notice के लिए add_action फ़ंक्शन कॉल को कमेंट करके शुरू करें। फिर, निम्नानुसार init में चौथा add_action कॉल जोड़ें:

जब भी प्लगइन ऑप्शन सेव किये जाते हैं, तो सुपर ग्लोबल $_GET ऐरे वेरिएबल में true का एक settings-updated किया गया वैल्यू जोड़ा जाता है। हम यह निर्धारित करने के लिए इसका उपयोग कर सकते हैं कि हमें हमारी एडमिन सूचना डिस्प्ले करने की आवश्यकता है या नहीं।

Gwyer_Admin_Notices को एक नई conditional_plugin_admin_notice मेथड जोड़ें जो स्क्रीन पर $_GET के वैल्यू को आउटपुट करता है।

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

Normal Plugin Options Page Loading

अब Enter some text में कुछ टेक्स्ट एंटर करें और Save Changes पर क्लिक करें। इस बार, हम settings-updated को true पर सेट देखते हैं, जिसे हम अच्छे उपयोग में डाल सकते हैं।

The settings-updated value set to true

conditional_plugin_admin_notice को इसके साथ बदलें:

अब तक, यह कोड आपको परिचित लग रहा होना चाहिए। हालांकि, कुछ नई विशेषताएं जोड़ दी गई हैं। सबसे पहले, कंडीशनल एक्सप्रेशन को settings-updated की उपस्थिति के लिए परीक्षण करने के लिए बढ़ा दिया गया है। अब, एडमिन नोटिस केवल तभी डिस्प्ले होगा जब हम प्लगइन ऑप्शन पेज पर हों और यदि settings-updated true पर सेट हो।

साथ ही, मौजूदा यूजर डिस्प्ले नाम को एडमिन नोटिस को थोड़ा और व्यक्तिगत बनाने के लिए आउटपुट किया जाता है।

A more personal admin notice message

wp_get_current_user() फ़ंक्शन वर्तमान में लॉग-इन किए गए यूजर के बारे में जानकारी देता है। यह ऑब्जेक्ट $current_user में संग्रहीत है और इसमें यूजर ईमेल, आईडी, पहला नाम, अंतिम नाम, और डिस्प्ले नाम जैसे विवरण शामिल हैं, जो कि हम जिस विशेष प्रॉपर्टी में रुचि रखते हैं वह है।

आखिरकार, थोड़ी अतिरिक्त पॉलिश के लिए, हमने डिफॉल्ट एडमिन नोटिस को डिस्प्ले करने से रोका है ताकि हमारा कस्टम एक यूजर के लिए केवल एक ही दिखाई दे। इसे प्राप्त करने के लिए, हमने अवांछित एडमिन नोटिस को छिपाने के लिए आउटपुट CSS में conditional_plugin_admin_notice() को कोड की एक लाइन भी जोड़ा।

अंतिम परिणाम जब प्लगइन ऑप्शन सेव किये जाते हैं नीचे दिखाया गया है।

The finished admin notice to show the plugin has been updated

हालांकि यह प्रदर्शन उद्देश्यों के लिए ठीक काम करता है, एक बेहतर (और क्लीनर) दृष्टिकोण स्टाइल को एक अलग स्टाइल शीट में जोड़ने और केवल प्लगइन ऑप्शन पेज पर इसे संलग्न करने के लिए होगा।

हमारे कस्टम एडमिन नोटिस को कई तरीकों से आगे बढ़ाया जा सकता है। प्लगइन ऑप्शन सेव किये जाने पर हर बार यूजर की जानकारी के साथ वर्तमान दिनांक/समय को संग्रहीत करने वाले लॉग को बनाए रखने की संभावना हो सकती है।

या एडमिन नोटिस को यह दिखाने के लिए कि उस दिन, सप्ताह, महीने इत्यादि कितनी बार प्लगइन ऑप्शन सेव किये गए हैं? मुझे यकीन है कि आप और भी उदाहरणों के बारे में सोच सकते हैं!

प्रभावी एडमिन नोटिस को प्रभावी ढंग से डिसमिस करना

अब हमारे हाथों को गंदे करने और अधिक गहन कोड में खोदने का समय है क्योंकि हम लगातार एडमिन नोटिस को डिसमिस करने के लिए अपना ध्यान बदलते हैं। अब तक, एकमात्र तरीका हमने देखा है कि यह कैसे करना है। हमारे एडमिन नोटिस div कंटेनर में .is-dismissible CSS क्लास को जोड़ना है। यह वर्तमान पेज के लिए एडमिन नोटिस को डिसमिस कर देता है, लेकिन अभ्यास में इसका अधिक उपयोग नहीं होता है क्योंकि जब कोई एडमिन पेज पुनः लोड होता है तो यह फिर से दिखाई देता है।

तो हम इसे कैसे ठीक कर सकते हैं? हम सदैव के लिए एडमिन नोटिस को डिसमिस करने के कई अलग-अलग तरीकों को देखेंगे, जिनमें निम्न शामिल हैं:

  • वन-ऑफ एडमिन नोटिस जो एक व्यू के बाद गायब हो जाता है।
  • एक एडमिन नोटिस काउंटर जो कुछ निश्चित व्यूज के बाद गायब हो जाता है।
  • स्टिकी एडमिन नोटिस जो पेज रीफ्रेश पर डिसमिस कर दिया जाता है।
  • कस्टम एक्शन डिस्मिस्सल (विशिष्ट एक्शन के बाद हटाए गए एडमिन नोटिस को पूरा कर लिया जाता है)।

इन उदाहरणों में से प्रत्येक को लागू करने से पहले, सुनिश्चित करें कि Gwyer_Admin_Notices::init() में सभी add_action() कॉलों पर कमेंट किया गया है। फिर admin_notices प्लगइन फ़ोल्डर में एक नई dismissible-admin-notices.php फ़ाइल जोड़ें। इस नई फाइल को खोलें और एक नई क्लास परिभाषा जोड़ें:

admin_notices.php में, हमारी नई क्लास आयात करने के लिए एक और require_once() कॉल जोड़ें:

Gwyer_Dismissible_Admin_Notices क्लास में निरंतर एडमिन नोटिस को डिसमिस करने से संबंधित सभी कोड होंगे।

वन-ऑफ एडमिन नोटिस

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

आइए हम अपने एडमिन नोटिस प्लगइन के लिए ऐसा करते हैं। हम प्लगइन एक्टिवेशन पर एक WordPress transient ऑप्शन रजिस्टर करके शुरू करेंगे जो लगभग तुरंत समाप्त होने के लिए सेट है।

Gwyer_Dismissible_Admin_Notices क्लास में, register_activation_hook() पर एक कॉल जोड़ें:

register_activation_hook() फ़ंक्शन के लिए आपको मुख्य प्लगइन फ़ाइल के पाथ को निर्दिष्ट करने की आवश्यकता होती है, लेकिन वर्तमान में हम dismissible-admin-notices.php में हैं। इसलिए हम केवल PHP के मैजिक कांस्टेंट __FILE__ का उपयोग नहीं कर सकते हैं जिसे हमने पहले उपयोग किया था क्योंकि यह हमेशा वर्तमान PHP फ़ाइल को इंगित करता है।

इसके बजाए, हमें plug_dir_path(__FILE__) . 'admin-notices.php' का उपयोग करके मुख्य प्लगइन फ़ाइल का पाथ बनाना होगा।

जब एडमिन नोटिस प्लगइन एक्टिवेट होता है, तो यह set_admin_notice_transient क्लास मेथड में जोड़ा गया कोड चलाएगा, जिसे हम आगे परिभाषित करेंगे।

यह मेथड true के वैल्यू के साथ 'admin-notice-transient' नामक एक नया ट्रांसिएंट बनाता है, और पांच सेकंड के बाद समाप्त होने के लिए सेट है।

अगर हम सही एडमिन पेज पर हैं और हमारे ट्रांसिएंट अभी भी मौजूद हैं तो कण्डीशनली एक एडमिन नोटिस डिस्प्ले करके इस ट्रांसिएंट का उपयोग करें।

Init() में एक नया add_action() कॉल जोड़ें।

फिर, एक नई क्लास मेथड के रूप में display_admin_notice कॉलबैक फ़ंक्शन जोड़ें:

इसी प्रकार पिछले उदाहरणों के लिए, एडमिन नोटिस केवल तभी डिस्प्ले होता है जब हम किसी विशिष्ट पेज पर हों- इस मामले में, मुख्य एडमिन प्लगइन्स पेज। लेकिन हमारे पास एक अतिरिक्त कंडीशन है कि 'admin-notice-transient' भी मौजूद होना चाहिए, अन्यथा एडमिन नोटिस डिस्प्ले नहीं होगा।

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

कोड को जांचने के लिए हमने अभी जोड़ा है, मुख्य प्लगइन्स पेज पर जाएं और निष्क्रिय करें, फिर एडमिन नोटिस प्लगइन को फिर से एक्टिवेट करें।

The one-off admin notice

यहां key 'admin-notice-transient' ट्रांसिएंट सेटिंग है। इसके बिना, प्रत्येक बार प्लगइन्स पेज लोड होने पर एडमिन नोटिस दिखाई देगा (प्लगइन एक्टिवेट होने के बाद), जो हम नहीं चाहते हैं।

एडमिन नोटिस काउंटर

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

शुरू करने से पहले, Gwyer_Dismissible_Admin_Notices क्लास में, register_activation_hook() और add_action() फ़ंक्शन कॉल पर कमेंट करें। अब आइए बुनियादी एडमिन नोटिस सेट करें जिसे हम जल्द ही फंक्शनलिटी बढ़ाएंगे।

Init() में एक नया add_action() कॉल जोड़ें

और फिर कॉलबैक फ़ंक्शन को डिस्प्ले करें display_admin_notice_counter():

यह एक स्टैण्डर्ड एडमिन नोटिस डिस्प्ले करेगा जो प्रत्येक WordPress एडमिन पेज पर दिखाई देगा।

Standard admin notice ready for customisation

आइए सोचें कि हमें क्या करना है। हमारे एडमिन नोटिस को एक निश्चित संख्या डिस्प्ले करना चाहिए, और हर बार जब ऐसा लगता है कि एक आंतरिक काउंटर एक से बढ़ता है। एक बार काउंटर सीमा तक पहुंचने के बाद, एडमिन नोटिस फिर से प्रकट नहीं होना चाहिए।

हम चाहते हैं कि एडमिन नोटिस किसी भी एडमिन पेज पर डिस्प्ले किया जाए और इसलिए काउंटर वैल्यू पेज लोड के बीच जारी रहना चाहिए। ऐसा करने का एक अच्छा तरीका काउंटर वैल्यू को स्टोर करने के लिए डेटाबेस ऑप्शन का उपयोग करना है।

काउंटर सीमा वैल्यू को स्टोर करने के लिए काउंटर क्लास प्रॉपर्टी जोड़ें:

यह शीघ्र ही प्रबंधित करने के लिए उपयोग किया जाएगा कि एडमिन नोटिस कितनी बार प्रकट होता है। display_admin_notice_counter() के अंदर, कोड को निम्नानुसार अपडेट करें:

एडमिन नोटिस डिस्प्ले होने से पहले, हम काउंटर ऑप्शन पुनर्प्राप्त कर रहे हैं, और डिफ़ॉल्ट वैल्यू रीटर्न किया गया है यदि यह अभी तक मौजूद नहीं है। एडमिन नोटिस प्रस्तुत करने के बाद, काउंटर ऑप्शन एक से बढ़ाया जाता है और अपडेट किया जाता है। यदि यह अस्तित्व में नहीं है तो वर्तमान वैल्यू को संग्रहीत करने के लिए एक नया ऑप्शन बनाया जाएगा।

हमने एक सूचना एडमिन नोटिस होने के लिए CSS क्लास को भी अपडेट किया है।

विभिन्न एडमिन पेजेज पर जाकर देखें और प्रत्येक बार काउंटर वृद्धि देखें।

Counter admin notice in action

++$counter कोड पूर्व-इन्क्रीमेंट ऑपरेटर का एक उदाहरण है। यह डेटाबेस में सेव किये जाने से पहले $counter के लिए एक वैल्यू जोड़ता है। अगर हम एक पोस्ट इन्क्रीमेंट ऑपरेटर (यानी $counter++) का उपयोग करते हैं तो $counter का मूल्य पहले स्टोर किया जाएगा और फिर बढ़ेगा, जो काम नहीं करेगा।

एडमिन नोटिस को कई बार डिस्प्ले होने से रोकने के लिए अब $counter_limit को शामिल करें। इसे $counter के लिए डिक्लेरेशन के नीचे display_admin_notice_counter() में जोड़ें:

अब, एडमिन नोटिस पांच बार डिस्प्ले होने के बाद, यह बाद के एडमिन पेजेज पर दिखाई नहीं देगा। हालांकि, यह अच्छा हो सकता है कि आखिरी बार एडमिन नोटिस दिखाई देने पर एक संदेश डिस्प्ले करने के लिए यूजर को पता है कि यह फिर से दिखाई नहीं देगा। कंडीशनल एक्सप्रेशन बढ़ाएं और एक अतिरिक्त संदेश आउटपुट करें:

हालांकि, अगर आप काउंटर सीमा से पहले ही चले गए हैं तो आपको संदेश नहीं दिखाई देगा। आप $counter_limit वेरिएबल को बढ़ाकर अस्थायी रूप से इसे हल कर सकते हैं।

Display an additional message on the final render

परीक्षण उद्देश्यों के लिए, काउंटर सीमा को रीसेट करने में सक्षम होना बेहतर होगा। यदि आप डेटाबेस को एडिट करने के बारे में जानते हैं, तो आप सीधे ऑप्शन में जा सकते हैं और बदल सकते हैं, लेकिन यह कई बार करने के लिए कठिन हो सकता है। तो चलिए अपनी खुद के रीसेट फीचर को लागू करें।

सबसे पहले, $counter_limit को वापस 5 में बदलें और एक नई क्लास प्रॉपर्टी जोड़ें:

फिर, init() के अंदर रेप्लस करें

इसके साथ

रीसेट फ़ंक्शन या तो हमारे काउंटर एडमिन नोटिस को दिखाएं या admin_notice_counter डेटाबेस ऑप्शन को हटाएं और इसके बजाय एक वार्निंग एडमिन नोटिस डिस्प्ले करें।

नई रीसेट फीचर का उपयोग करने के लिए, बस $counter_reset को true में बदलें और किसी भी एडमिन पेज को लोड करें।

Reset admin notice counter

फिर इसे फिर से false में बदलें।

Admin notice counter successfully reset

नोट: इस मेथड को आसानी से एक बार एक एडमिन नोटिस डिस्प्ले करने के लिए उपयोग किया जा सकता है, जैसा कि हमने पिछले उदाहरण में किया था, लेकिन यह सेट अप करने के लिए थोड़ा अधिक जटिल है। यह वास्तव में आपकी आवश्यकताओं पर निर्भर करता है।

यदि आपको केवल एक ही उपयोग की आवश्यकता है तो एडमिन नोटिस तब पिछले मेथड शायद आपकी आवश्यकताओं को बेहतर तरीके से अनुरूप करेगा और इसे लागू करने में तेज़ी होगी। लेकिन काउंटर मेथड अधिक लचीला है, और एक बार सेट उप होने पर, यह आपकी अपनी प्रोजेक्ट्स में उपयोग करना उतना ही आसान है।

निष्कर्ष

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

फिर, हम लगातार एडमिन नोटिस को डिसमिस करने के दो अलग-अलग उदाहरणों पर चले गए। यह आपको यूजर को एडमिन नोटिस कैसे पेश करता है, इस बारे में आपको बहुत लचीलापन देता है। और इस ट्यूटोरियल श्रृंखला के अगले और अंतिम भाग में, हम लगातार एडमिन नोटिस को डिसमिस करने के अधिक तरीकों को देखेंगे।

और, थोड़ी मस्ती के लिए, हम अपने स्वयं के कस्टम एडमिन नोटिस टाइप बनाएंगे और आइकन की सजावट जोड़ देंगे।

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.