Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Plugins

स्क्रैच से WordPress अवतार मैनेजमेंट प्लगइन कैसे बनाएं: प्रारंभ करना

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called How to Create a WordPress Avatar Management Plugin from Scratch.
How to Create a WordPress Avatar Management Plugin: Finishing Touches

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

WordPress के लिए अवतार मैनेजर लोकली और अधिक अवतार स्टोर करने के लिए एक स्वीट और सिंपल प्लगइन है। आसानी से।

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


परिचय

एक WordPress प्लगइन एक PHP एप्लीकेशन है जो WordPress में फीचर्स या सर्विसेज का एक विशिष्ट सेट जोड़ता है, जिसे WordPress प्लगइन API द्वारा प्रदान किए गए एक्सेस पॉइंट्स और मेथड्स का उपयोग करके WordPress के साथ आसानी से इंटेग्रट किया जा सकता है।

यह आर्टिकल आपको स्क्रैच से अपना WordPress प्लगइन बनाने की प्रक्रिया के माध्यम से मार्गदर्शन करेगा।

नोट: यह आर्टिकल मानता है कि आप WordPress की बुनियादी फंक्शनलिटी और PHP प्रोग्रामिंग से पहले ही परिचित हैं।


स्टेप 1. वर्कस्पेस सेट अप करना

अपने WordPress इंस्टॉल के अंडर wp-content/plugins/ पर नेविगेट करना प्रारंभ करने के लिए। वर्कस्पेस को सेटअप करने के लिए नीचे दी गई इमेज में उदाहरणों और खाली फ़ाइलों का निम्न स्ट्रक्चर बनाकर प्रारंभ करें:

Workspace structure of the Avatar Manager plugin
अवतार मैनेजर प्लगइन की वर्कस्पेस स्ट्रक्चर

प्लगइन डायरेक्टरी के लिए और मुख्य PHP फ़ाइल के लिए एक यूनिक नाम चुनना सुनिश्चित करें, जैसे avatar-manager और avatar-manager.php इस उदाहरण में, और सभी प्लगइन की फ़ाइलों को उस डायरेक्टरी में रखें।

साइलेंस गोल्डन है

हमारी प्लगइन लिखने से पहले, avatar-manager/index.php खोलें और निम्न कोड जोड़ें:

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


स्टेप 2. एक बेसिक WordPress प्लगइन लिखना

अब, यह समय हमारे मुख्य प्लगइन PHP फ़ाइल में कुछ जानकारी डालने का समय है।

स्टैण्डर्ड प्लगइन इन्फॉर्मेशन

प्लगइन की मुख्य PHP फ़ाइल के टॉप में एक स्टैण्डर्ड प्लगइन इन्फॉर्मेशन हैडर होना चाहिए। यह हेडर WordPress को यह पहचानने देता है कि प्लगइन मौजूद है, इसे प्लगइन मैनेजमेंट स्क्रीन में जोड़ें ताकि इसे एक्टिव किया जा सके, इसे लोड किया जा सके और उसके फंक्शन्स को चलाया जा सके; हैडर के बिना, प्लगइन कभी एक्टिव नहीं होगा और कभी नहीं चलेगा।

avatar-manager/avatar-manager.php खोलें और निम्न लाइन्स जोड़ें:

कम से कम जानकारी जिसकी WordPress को हमारी प्लगइन को पहचानने के लिए आवश्यकता है Plugin Name लाइन है। प्लगइन मैनेजमेंट स्क्रीन पर प्लगइन की टेबल बनाने के लिए शेष जानकारी (यदि मौजूद है) का उपयोग किया जाएगा। लाइनों का क्रम महत्वपूर्ण नहीं है।

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

लाइसेंस स्लग प्लगइन के लाइसेंस के लिए एक छोटा कॉमन आइडेंटिफायर होना चाहिए और कोड के लाइसेंस के बारे में स्पष्ट होने का एक आसान तरीका होना चाहिए।

वर्जेनिंग

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

निम्नलिखित फोर्मट्स के साथ रिलीज़ का नंबर दिया जाएगा:

<major>.<minor>.<patch>

और निम्नलिखित गाइडलाइन्स के साथ बनाया गया:

  • बैकवर्ड कपटिलिटी को ब्रेक करना मेजर को टक्कर देता है (और माइनर और पैच को रीसेट करता है)।
  • बैकवर्ड कपटिलिटी को ब्रेक करने के बिना नए जोड़े माइनर को टक्कर देते हैं (और पैच को रीसेट करता है)।
  • बग फिक्स और misc परिवर्तन पैच को टक्कर देता है।

SemVer पर अधिक जानकारी के लिए, कृपया semver.org पर जाएं।

लाइसेंस

प्लगइन के लिए लाइसेंसिंग के बारे में जानकारी के साथ स्टैण्डर्ड हैडर का पालन करना कस्टमरी है। अधिकांश प्लगइन्स WordPress द्वारा उपयोग किए जाने वाले एक ही लाइसेंस का उपयोग करते हैं, जो GPLv2 लाइसेंस या GPLv2 के साथ कम्पेटिबल लाइसेंस होता है। GPLV 2 लाइसेंस इंगित करने के लिए, हमारी प्लगइन में निम्नलिखित लाइन्स शामिल करें:

इसके बाद, avatar-manager/LICENSE खोलें और GPLv2 के प्लेन टेक्स्ट वर्जन को पेस्ट करें।


स्टेप 3. अवतार मैनेजर प्लगइन प्रोग्रामिंग

पिछले स्टेप को पूरा करने के बाद आप Plugins Screen के अंदर Avatar Manager प्लगइन को लोकेट करने में सक्षम होने चाहिए।

The Avatar Manager plugin under Plugins Screen
Plugins Screen के अंदर अवतार मैनेजर प्लगइन

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

define() फ़ंक्शन रनटाइम पर नामित निरंतर परिभाषित करता है। plugin_dir_url() फ़ंक्शन को प्लगइन __FILE__ में प्लगइन के लिए URL (पीछे पीछे स्लैश के साथ) मिलता है। __FILE__ की वैल्यू वर्तमान फ़ाइल का पूरा पाथ और फ़ाइल नाम है और यह PHP के आठ मैजिकल कांस्टेंट में से एक है।

आइए आगे बढ़ें और हमारे प्लगइन को शुरू करें:

add_action() कॉल एक फ़ंक्शन को एक ख़ास एक्शन पर हुक करता है। WordPress लोड होने के बाद पर किसी भी हैडर को भेजे जाने से पहले init एक्शन चलता है। इसके अलावा load_plugin_textdomain() कॉल init के दौरान किया जाना चाहिए, अन्यथा यूजर इसमें हुक नहीं हो सकते हैं। लेकिन इसके बारे में बाद में, जब मैं अपनी प्लगइन के internatinoalization को कवर करूंगा। dirname() फ़ंक्शन पैरेंट डायरेक्टरी का पाथ देता है, जबकि plugin_basename() फ़ंक्शन प्लगइन का बेसनाम प्राप्त करता है।

हुक, एक्शन्स और फ़िल्टर

WordPress द्वारा हुक प्रदान किए जाते हैं ताकि प्लगइन को बाकी WordPress में हुक किया जा सके; यानी, विशिष्ट समय पर प्लगइन में फ़ंक्शन कॉल करने के लिए, और इस तरह प्लगइन को मोशन में सेट करें। दो प्रकार के हुक हैं:

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

स्टेप 4. प्लगइन ऑप्शन जोड़ना

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

जब कोई यूजर एडमिन एरिया तक पहुंचता है तो admin_init एक्शन किसी भी अन्य हुक से पहले ट्रिगर किया जाता है। register_setting() फ़ंक्शन एक सेटिंग और इसकी सेनिटाइज़ेशन कॉलबैक रजिस्टर करता है। add_settings_field() फ़ंक्शन किसी सेटिंग फ़ील्ड को सेटिंग पेज और सेक्शन में रजिस्टर करता है। हमने उन्हें Settings Discussion स्क्रीन के अंदर हमारे प्लगइन ऑप्शन जोड़ने के लिए उपयोग किया। __() फ़ंक्शन बाद में समझाया जाएगा, जब मैं internatinalization प्रोसेस को कवर करूंगा।

स्टेप 5. सेनिटाइज़ेशन कॉलबैक जोड़ना

सेनिटाइज़ेशन कॉलबैक लिखने से पहले, हमें दो और फ़ंक्शंस, avatar_manager_get_default_options() और avatar_manager_get_options() को परिभाषित करने की आवश्यकता है।

avatar_manager_get_default_options() फ़ंक्शन प्लगइन के डिफ़ॉल्ट ऑप्शन को रीटर्न करता है।

avatar_manager_get_options() फ़ंक्शन वर्तमान प्लगइन ऑप्शंस को रिट्रीव करता है। get_otpion() फ़ंक्शन स्पेसिफिक ऑप्शन या डिफ़ॉल्ट वैल्यू की वैल्यू देता है यदि ऑप्शन डेटाबेस में नहीं है।

avatar_manager_sanitize_options() फ़ंक्शन प्लगइन ऑप्शंस को सेनिटाइज़ और वैलिडेट करता है। isset() कॉल निर्धारित करता है कि कोई वेरिएबल NULL सेट है या नहीं। trim() फ़ंक्शन स्ट्रिंग की शुरुआत और अंत से सफेद जगहों को स्ट्रिप करता है। is_numeric() फ़ंक्शन पाता है कि कोई वेरिएबल एक नंबर है या एक न्यूमेरिक स्ट्रिंग है। absint() फ़ंक्शन एक वैल्यू को एक नॉन-नेगेटिव इन्टिजर में परिवर्तित करता है।


स्टेप 6. सेटिंग फ़ील्ड जोड़ना

अब, सेटिंग फ़ील्ड जोड़ने का समय है।

avatar_manager_avatar_uploads_settings_field() कॉलबैक अवतार अपलोड सेटिंग्स फ़ील्ड को प्रिंट करता है। checked() फ़ंक्शन दो दिए गए वैल्यूज की तुलना करता है और, यदि वैल्यूज समान हैं, तो checked एट्रिब्यूट को वर्तमान चेकबॉक्स में जोड़ता है। _e() फ़ंक्शन बाद में डिस्क्राइब किया जाएगा, जब मैं internationalization प्रोसेस की व्याख्या करूंगा।

avatar_manager_default_size_settings_field() कॉलबैक डिफ़ॉल्ट आकार सेटिंग्स फ़ील्ड को प्रिंट करता है।

सेटिंग फ़ील्ड जोड़ने के बाद आप Settings Discussion Screen के नीचे प्लगइन ऑप्शंस का एड्रेस लगाने में सक्षम होना चाहिए।

The Avatar Manager plugin options under the Settings Discussion Screen
Settings Discussion Screen के अंदर अवतार मैनेजर प्लगइन ऑप्शन

पहला ऑप्शन कण्ट्रोल करता है कि कम विशेषाधिकार प्राप्त यूजर अवतार इमेज अपलोड कर सकते हैं या नहीं, जबकि दूसरा ऑप्शन अवतार इमेज के लिए डिफ़ॉल्ट आकार का प्रतिनिधित्व करता है।


स्टेप 7. अवतार सेक्शन को जोड़ना

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

show_user_profile और edit_user_profile एक्शन्स यूजर प्रोफ़ाइल पेज के कस्टमाइज़ेशन में सहायता करती हैं। $profileuser पैरामीटर एडिट किए जा रहे यूजर का एक WP_User ऑब्जेक्ट है। get_post_meta() फ़ंक्शन कस्टम फ़ील्ड की वैल्यू को रीटर्न करता है जिसके साथ स्पेसिफाइड पोस्ट में से स्पेसिफाइड  key होती है। empty() फ़ंक्शन निर्धारित करता है कि कोई वेरिएबल खाली है या नहीं। remove_filter() फ़ंक्शन स्पेसिफाइड फ़िल्टर हुक से जुड़े एक फ़ंक्शन को हटा देता है; अवतार इमेज को रिट्रीव करने के लिए हमारे कस्टम फ़ंक्शन को निकालना आवश्यक है।

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

अवतार पिकर

अवतार पिकर यूजर को Gravatar या कस्टम अवतार इमेज का उपयोग करने के बीच चुनने देता है। इसे जोड़ने के लिए, निम्न कोड लिखें:

get_avatar() फ़ंक्शन उस यूजर के लिए अवतार रिट्रीव करता है जिसने यूजर ID या ईमेल एड्रेस प्रदान किया है। यूजर ID द्वारा कस्टम अवतार इमेज को रिट्रीव करने के लिए, हमने avatar_manager_get_custom_avatar() फ़ंक्शन का उपयोग किया, जिसे हम बाद में लिखेंगे। current_user_can() फ़ंक्शन जांचता है कि वर्तमान यूजर की एक निश्चित क्षमता है या नहीं। आम तौर पर, सब्सक्राइबर्स जैसे कम प्रिविलेज यूज़र्स को फ़ाइलों को अपलोड करने की अनुमति नहीं है; यही कारण है कि हम $option['avatar_uploads'] वेरिएबल का उपयोग करते हैं। esc_attr() फ़ंक्शन HTML ऐट्रिब्यूट्स को एस्केप करता है। self_admin_url() फ़ंक्शन ऑप्शनल पाथ अपेण्ड के साथ एक एडमिन URL लिंक रिट्रीव करता है। IS_PROFILE_PAGE कांस्टेंट हमें बताता है कि क्या हम अपनी प्रोफ़ाइल या किसी अन्य यूजर की प्रोफ़ाइल को एडिट कर रहे हैं। wp_nonce_url() फ़ंक्शन URL क्वेरी में जोड़े गए nonce के साथ URL रिट्रीव करता है। अवतार को डिलीट करने से पहले, हम यूजर को डिलीट लिंक के onclick इवेंट पर showNotice.warn() मेथड को कॉल करके कन्फर्म करने के लिए कहते हैं जो एक वार्निंग नोटिस प्रदर्शित करता है।

अपलोड फॉर्म

अपलोड फॉर्म यूजर को एक कस्टम अवतार इमेज ब्राउज़ और अपलोड करने की अनुमति देता है:

submit_button() फ़ंक्शन सबमिट किए गए टेक्स्ट और उचित क्लास के साथ सबमिट बटन को सबमिट करता है।

रेटिंग चूज़र

रेटिंग चूज़र तब दिखता है जब एक कस्टम अवतार उपलब्ध होता है। इसे जोड़ने के लिए, निम्न लाइन्स लिखें:

यह यूजर को उपयोग की जाने वाली कस्टम अवतार इमेज के लिए उपयुक्त रेटिंग चुनने देता है।


स्टेप 8. स्क्रिप्ट और स्टाइल्स को जोड़ना

अब हमने अवतार सेक्शन को जोड़ा है, अब इसे स्टाइल करने का समय है। साथ ही, हम फॉर्म एन्कोडिंग को बदलने के लिए कुछ JS लिखेंगे; यह स्टेप आवश्यक है क्योंकि हमने इसमें फ़ाइल अपलोड कण्ट्रोल को जोड़ा है।

CSS स्टाइल

हमारी प्लगइन को स्टाइल करने के लिए, avatar-manager/avatar-manager.css खोलें और निम्न लाइन्स लिखें:

यह radiobox के साथ वर्टिकली अवतार इमेज को अलाइन करता है और WordPress के नेटिव इंटरफ़ेस के साथ एक निर्बाध इंटीग्रेशन के लिए हटाए गए लिंक को स्टाइल करता है।

JS स्क्रिप्ट

अगला, avatar-manager/avatar-manager.js खोलें और निम्न कोड जोड़ें:

.attr() फ़ंक्शन प्रत्येक मैच किए गए एलिमेंट के लिए एक या अधिक फीचर्स की वैल्यू को सेट करता है। enctype एट्रिब्यूट निर्दिष्ट करता है कि सर्वर पर सबमिट करते समय form-data को एन्कोड किया जाना चाहिए। फ़ाइल अपलोड की अनुमति देने के लिए हमें अपना वैल्यू को multiple/form-data में बदलना होगा।


स्टेप 9. स्क्रिप्ट्स और स्टाइल्स को एनक्यू करना

WordPress जेनरेट पेज पर स्क्रिप्ट और स्टाइल्स को जोड़ने की सुरक्षित और रेकमेंड मेथड wp_enqueue_script() और wp_enqueue_style() का उपयोग करना है। इन फंक्शन्स में स्क्रिप्ट और स्टाइल्स को शामिल किया गया है यदि वे पहले से ही शामिल नहीं किए गए हैं, और डेपेंडेन्सीज़ को सुरक्षित रूप से संभालते हैं।

admin_enqueue_scripts एक्शन एडमिन स्क्रिप्ट एक्शन्स में पहला एक्शन है। फिर, ग्लोबल वेरिएबल $hook_suffix का उपयोग केवल आवश्यक पेजेज पर हमारी स्क्रिप्ट और स्टाइल्स को जोड़ने के लिए किया जाता है। एक स्क्रिप्ट या स्टाइल को ग्रहण करने से पहले, हमें पहले इसे रजिस्टर करने की आवश्यकता है। wp_register_style() फ़ंक्शन बाद में उपयोग के लिए एक CSS स्टाइल फ़ाइल रजिस्टर करने का एक सुरक्षित तरीका है; wp_enqueue_style() फ़ंक्शन का उपयोग इसे करने के लिए किया जाता है। इसी तरह, wp_register_script() और wp_enqueue_script() फ़ंक्शंस का उपयोग हमारी प्लगइन JS स्क्रिप्ट फ़ाइल को रजिस्टर और एनक्यू करने के लिए किया जाता है।

इस स्टेप के बाद आप अपने प्लगइन ऑप्शन को User Your Profile Screen के अंडर में लोकेट करने में सक्षम होने चाहिए।

The Avatar Manager plugin options under the User Your Profile Screen
User Your Profile Screen के अंडर में अवतार मैनेजर प्लगइन ऑप्शन

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


आगे क्या होगा

यह हमारे ट्यूटोरियल का पहला भाग पूरा करता है। मुझे आशा है कि आपने उस समय का आनंद लिया है जिसे हमने एक साथ बिताया है और आपने इसे उपयोगी पाया है। अगले भाग में हम अवतार मैनेजर प्लगइन को खत्म करने जा रहे हैं; हम अवतार अपलोड और ऑन-डिमांड इमेज जनरेशन को संभालेंगे, हमारे प्लगइन को internationalize करेंगे और बहुत कुछ करेंगे। पढ़ने के लिए धन्यवाद!


रेफरेन्सेस

  • WordPress कोडिंग स्टैंडर्ड्स - WordPress डेवलपमेंट के लिए कोडिंग स्टैंडर्ड्स के बारे में सामान्य जानकारी।
  • एक प्लगइन लिखना - WordPress प्लगइन्स को डेवेलप करने के बारे में सीखने के लिए सबसे अच्छी जगह।
  • प्लगइन API - आपके WordPress प्लगइन में एक्शन और फिल्टर हुक का उपयोग करने का तरीका, और कोर फंक्शन जो प्लगइन ओवरराइड कर सकते हैं।
  • सेटिंग्स API - मौजूदा सेटिंग्स स्क्रीन पर नई सेटिंग्स जोड़ने के लिए उदाहरणों के साथ एक रिफरेन्स।
  • फंक्शन रेफरेंस - प्लगइन और थीम डेवलपर्स के लिए उपयोगी कोर WordPress फ़ंक्शंस के साथ एक आर्टिकल; टेम्पलेट टैग को छोड़कर, अधिकांश कोर फंक्शन्स की लिस्ट देता है।
  • SemVer - सिमेंटिक वर्जन (SemVer) स्पेसिफिकेशन।
  • GPLv2 - GNU जनरल पब्लिक लाइसेंस, वर्जन 2।

बाहरी लिंक्स

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.