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

अटैचमेंट में कस्टम फ़ील्ड कैसे जोड़ें

by
Length:MediumLanguages:

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

आपको WordPress में कस्टम फ़ील्ड से परिचित होना चाहिए। अतिरिक्त डेटा जोड़ने के लिए हम उन्हें एक पोस्ट या पेज पर इस्तेमाल करते हैं। WordPress अटैचमेंट में पोस्ट के रूप में भी सेव किये जाते हैं, इसलिए कस्टम फ़ील्ड भी उनके लिए उपलब्ध हैं।

आज हम देखेंगे कि हम कुछ कस्टम फ़ील्ड कैसे जोड़ सकते हैं ताकि अटैचमेंट केवल डिफ़ॉल्ट डेटा की तुलना में अधिक जानकारी ले सकें।


हम क्या करेंगे

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

इसके लिए, हम दो WordPress हुक का उपयोग करेंगे:


1. प्लगइन बनाना

मैं इस भाग से जल्दी से गुजर जाऊंगा क्योंकि यह इस ट्यूटोरियल का मुख्य उद्देश्य नहीं है।

प्लगइन्स डायरेक्टरी (wp-content/plugins/media-fields/ उदाहरण के लिए) में एक नया फ़ोल्डर बनाएं और अंदर एक फ़ाइल (plugin.php नाम दिया) डालें। आइए custom_media_fields.php नामक एक फ़ाइल भी डालें जो हमारे ऑप्शंस को रखेगी।

इस प्रकार आपकी plugin.php फ़ाइल सबसे पहले दिखनी चाहिए:

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


2. हमारे ऑप्शंस को परिभाषित करें

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

यह मूल रूप से एक अस्सोसिएटिव ऐरे है जिसमें ये पैरामीटर शामिल हैं:

  • label - फ़ील्ड नाम जो प्रदर्शित किया जाएगा
  • input - इनपुट टाइप (जैसे टेक्स्ट, सेलेक्ट, रेडियो, ...)
  • helps - यूजर को फ़ील्ड भरने में मदद करने के लिए जानकारी
  • application - जो अटैचमेंट माइम टाइप को लागू करने के लिए
  • exclusions - जो अटैचमेंट माइम टाइप को बाहर करने के लिए
  • required - क्या फ़ील्ड आवश्यक है? (डिफ़ॉल्ट false)
  • error_text - एरर का वर्णन करने के लिए ऑप्शनल फ़ील्ड (यदि आवश्यक हो तो true पर सेट होता है)
  • options - रेडियो और सेलेक्ट टाइप्स के लिए ऑप्शनल फील्ड
  • show_in_modal - क्या फील्ड को मॉडल में दिखाना है या नहीं (डिफ़ॉल्ट true)
  • show_in_edit - क्या क्लासिक एडिट व्यू में फ़ील्ड दिखाना है या नहीं (डिफ़ॉल्ट true)
  • extra_rows - कंटेंट को प्रदर्शित करने के लिए अतिरिक्त rows (उसी "tr" टैग के भीतर)
  • tr - अतिरिक्त rows ("tr" टैग)

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

चूंकि हम इमेजेज से निपट रहे हैं, हम एप्लिकेशन पैरामीटर को "image" पर सेट करते हैं। यह वास्तव में सभी प्रकार की इमेजेज पर लागू होगा जिनके माइम टाइप "image" जैसे image/jpeg, image/png आदि से शुरू होते हैं। उदाहरण के लिए आप एक्सक्लूशन फील्ड में इसे सेट करके gif माइम टाइप को एक्सक्लूड कर सकते हैं।

अब हमारे ऑप्शंस सेट हैं, चलो दो हुक से डील करते है।


3. हुक

जैसा कि पहले उल्लेख किया गया है, हम दो हुक से निपटेंगे।

हम कन्स्ट्रक्टर मेथड में उन दो हुकों से हमारे दो फंक्शन्स को बांधते हैं।

अब चलो उन हुक को विस्तार से देखें।

attachment_fields_to_edit

इसमें दो पैरामीटर हैं:

  1. $form_fields - अटैचमेंट एडिट फ़ॉर्म में निहित फ़ील्ड का एक ऐरे
  2. $post - ऑब्जेक्ट जो खुद एक अटैचमेंट का प्रतिनिधित्व करता है

हम अपने फॉर्म को मर्ज करने के लिए $form_fields पैरामीटर का उपयोग करेंगे और उनमें से प्रत्येक को अटैचमेंट रिक्वायरमेंट्स (उदाहरण के लिए माइम टाइप) के विरुद्ध जांचें।

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

तो आइए इसे संभालने के लिए हमारे फ़ंक्शन को एडिट करें। $values['input'] = 'text'; को निम्नलिखित कोड के साथ बदलें:

अब, हम कॉमन HTML एलिमेंट बना सकते हैं। आइए हमारे अटैचमेंट एडिट फॉर्म को देखें। इसे इस तरह दिखना चाहिए:

Attachment edit form with custom fields
कस्टम फ़ील्ड के साथ अटैचमेंट एडिट फॉर्म

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

Custom fields in modal
मोडल में कस्टम फ़ील्ड

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

attachment_fields_to_save

इस हुक में भी दो पैरामीटर हैं:

  1. $post - array जो अटैचमेंट एंटिटी का प्रतिनिधित्व करता है
  2. $attachment - अटैचमेंट पोस्ट से जुड़े सभी फ़ील्ड शामिल हैं

अब, चलिए पिछले सेक्शन में छोड़े गए फ़ंक्शन saveFields को भरें।

ठीक है, अब हमारे कस्टम फ़ील्ड डेटाबेस में सेव किये गए हैं और फ्रंट एंड के लिए उपलब्ध होंगे।

  • दोनों हुक में पोस्ट पैरामीटर में मैनिपुलेट करते समय सावधान रहें। यह पहले में एक object है और दूसरे में एक array है।
  • Tip: अगर अपडेट नहीं होता है तो update_post_meta मेटा को क्रिएट कर देगा।
  • Tip: हम कस्टम फ़ील्ड key को अंडरस्कोर "_" के साथ प्रीफिक्स करते हैं ताकि वे पोस्ट एडिट पेजेज पर कस्टम फ़ील्ड मेटाबोक्स में लिस्टेड नहीं होंगे।

एरर विचार

वर्जन 3.5 के अनुसार, ऐसा लगता है कि एरर अभी भी अटैचमेंट एडिट फ़ॉर्म पर दिखाई नहीं देते हैं। मैंने कोर कोड की जांच करने की कोशिश की, और इस तथ्य के बावजूद इसे ठीक किया जाना चाहिए था (http://core.trac.wordpress.org/ticket/13810), ऐसा नहीं लगता है।

AJAX सेव करने के प्रोसेस के लिए, यह निश्चित है कि यह अभी तक नहीं किया गया है जैसा कि ajax-actions.php फ़ाइल में उल्लिखित है:

तो अभी, एरर ठीक से काम नहीं करने जा रहे हैं, लेकिन कोड किया जाता है ताकि जब उन बग को ठीक किया जाए, तो यह काम करेगा।


फ़्रंट एंड

अपने टेम्पलेट्स में उन कस्टम फ़ील्ड्स का उपयोग करने के लिए, आपको पोस्ट मेटा को उसी तरह से रिट्रीव करना होगा जैसा आप नियमित पोस्ट के लिए करेंगे। कस्टम फ़ील्ड की key में "_" प्रीफिक्स जोड़ना मत भूलना।

उदाहरण के लिए, आप ऐसा कर सकते हैं:

Show custom fields on front-end
फ्रंट फ़ील्ड पर कस्टम फ़ील्ड दिखाएं

आगे बड़े

आपकी आवश्यकताओं के आधार पर सुधार के कई बिंदु हैं:

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

निष्कर्ष

इस प्लगइन को बेहतर बनाने और इस तरह की फंक्शनलिटी से आप क्या उम्मीद करेंगे इस बारे में अपने विचारों को साझा करने में संकोच न करें।

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.