प्लगइन्स में हुकिंग


12

मैं एक ऐसे प्लगइन पर काम कर रहा हूं जो आदर्श रूप से चीजों को करने में सक्षम होगा जब कोई उपयोगकर्ता एक अलग प्लगइन के माध्यम से कुछ करता है ।

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

उदाहरण: मैं अपने प्लगइन में कुछ करना चाहता हूं जब कोई लेख को रीट्वीट करता है। अगर जो कुछ भी लोकप्रिय रीट्वीट प्लगइन में एक कस्टम हुक था, वह है कि मैं हुक कर सकता हूं और आग बंद कर सकता हूं, तो यह बहुत अच्छा होगा। ऐसा नहीं है, इसलिए मैं इसे शामिल करने के लिए उनके प्लगइन को संशोधित कर सकता हूं, लेकिन यह केवल मेरी कॉपी के लिए काम करता है, और मैं इसे पुनर्वितरित करने का प्रयास नहीं करना चाहता।

क्या हमें बस कोशिश करने और बेहतर प्लगइन डेवलपर्स होने की आवश्यकता है ताकि हम सभी एक साथ अच्छा खेल सकें?


1
बड़ा अच्छा सवाल!
माइकस्किंकल

"क्या लेखक को कस्टम हुक शामिल करने के लिए कहने का एकमात्र वास्तविक समाधान है ताकि अन्य डेवलपर्स अपने काम से दूर हो सकें?" ज्यादातर मामलों में, हाँ। ऐसी कुछ स्थितियाँ हैं जहाँ आप अप्रत्यक्ष रूप से उनके प्लग इन को प्रबंधित कर सकते हैं, लेकिन आमतौर पर ऐसा नहीं होता है। उन्हें अपने प्लगइन्स लिखने के लिए कहें जैसे कि वे वर्डप्रेस कोर के लिए लिख रहे थे - इसमें एक फिल्टर / एक्शन शामिल करें जहां भी किसी को इसकी आवश्यकता हो सकती है।
Viper007Bond

1
संकेत: आपके प्लग इन दस्तावेज़ों को प्रदान करता है ताकि अन्य प्लगइन लेखक इसके साथ बातचीत कर सकें।
हकर्रे

जवाबों:


6

@ रियान एल्किन्स:

मुझे लगता है कि उत्तर इस बात पर निर्भर करता है कि प्रत्येक उपयोग-मामला आपको कैसे आयात करता है। कुछ मामलों में यह कुछ ऐसा होगा जिसकी आपको त्वरित और गंदी आवश्यकता है, दूसरों में यह एक अधिक महत्वपूर्ण उपयोग-मामला हो सकता है। यहाँ दो चीजें हैं जो मन में आती हैं:

वर्डप्रेस कोर के भीतर वैकल्पिक हुक के लिए देखें

यदि यह कुछ त्वरित और गंदा है तो आप जो भी आवश्यक है उसे संशोधित करने के लिए कोर से अन्य डाउनस्ट्रीम हुक का उपयोग कर सकते हैं, या अपस्ट्रीम और डाउनस्ट्रीम दोनों हुक को ob_start()/ के उपयोग के माध्यम से ob_end_clean()देख सकते हैं ( @Todd पर्किन्स " कोड के माध्यम से बड़े HTML आउटपुट से निपटने " का उत्तर दें ) एक कोड उदाहरण के लिए।)

उन हुक को ट्रैक करने के लिए, जिन्हें आप इंस्ट्रूमेंट हुक प्लग इन का उपयोग कर सकते हैं जिन्हें मैंने कल पोस्ट किया था ताकि आप उन हुक को ढूंढ सकें, जिन्हें आप संभावित रूप से उपयोग कर सकते हैं।

अपने वांछित हुक के साथ एक पैच को प्लगइन डेवलपर को भेजें

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

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

उम्मीद है की यह मदद करेगा?

PS एक बात मुझे थोड़ी निराशाजनक लगती है और वह यह कि आपके प्रश्न पते में प्लगइन्स का प्रतिशत होता है, जो केवल एंड-यूज़र के लिए डिज़ाइन किए जाते हैं, यानी जिनके स्वयं के कोई हुक नहीं होते हैं। कल्पना कीजिए कि क्या वर्डप्रेस को अधिकांश प्लगइन्स की तरह डिजाइन किया गया था? यह अनम्य और एक बहुत ही आला समाधान होगा।

शायद चीजें अलग होती अगर वर्डप्रेस में प्लग-इन करने की क्षमता होती, जिस पर अन्य प्लगइन्स निर्भर होते? जैसा कि यह है कि मुझे आम तौर पर स्क्रैच से बहुत अधिक कार्यक्षमता लिखनी होती है क्योंकि ग्राहक एक निश्चित तरीके और उपलब्ध प्लगइन्स चाहते हैं, जबकि 90% मुझे शेष 10% को अपडेट करने की अनुमति नहीं देते हैं।

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


2

हम सिर्फ प्रयास करने की आवश्यकता है और करने के लिए बेहतर तो हम एक साथ सब नाटक अच्छा कर सकते हैं कि डेवलपर्स प्लगइन जा सकता है?

शुरुआत के लिए, हाँ।

क्या लेखक को कस्टम हुक शामिल करने के लिए कहने का एकमात्र वास्तविक समाधान है ताकि अन्य डेवलपर्स अपने काम से दूर हो सकें?

यह एक अच्छा समाधान होगा।

आप अन्य प्लगइन की प्रतिलिपि भी बना सकते हैं और बस कोई भी परिवर्तन जोड़ सकते हैं, हालांकि यह अधिक परेशानी होगी।


2

मुझे लगता है कि आप सवाल में अपने सवाल का जवाब देते हैं, ताकि यह कुछ हद तक बयानबाजी हो जाए।

जाहिर है कि आप एक ऐसी ही प्रणाली के बारे में बात कर रहे हैं जो Google Android और इरादे प्रणाली के साथ प्रोत्साहित करती है, कि एक एप्लिकेशन उन कार्यों को प्रकाशित कर सकता है जो यह अन्य अनुप्रयोगों की ओर से करने में सक्षम है, जो तब उन्हें हुक कर सकते हैं और डेटा वापस भेज सकते हैं और आगे। व्यक्तिगत रूप से मुझे लगता है कि यह एक ऐसी चीज है जिसकी हमें अच्छे डेवलपर्स की ओर सिर करने की आवश्यकता है - हम वर्डप्रेस का उपयोग करते हैं क्योंकि यह पहले से ही भयानक है, इस पर निर्णय लेने के लिए पर्याप्त भयानक है कि इसका उपयोग करें या ज्यादातर मामलों में एक समान इन-हाउस उत्पाद विकसित करें। प्लगइन रिपॉजिटरी ही फिर से एक ही बात है, ज्यादातर एक अंत उपयोगकर्ता + डेवलपर के रूप में - एक ट्विटर प्लगइन क्यों विकसित होता है जब एक पूरी तरह से अच्छा होता है।

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

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

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

अगर आपको लगता है कि आपके प्लगइन में हुक लगाने के लिए एक अच्छी जगह होगी, तो इसे करें, और इसे अच्छी तरह से प्रलेखित करें। यदि अधिक लोग प्लग में हुक लगाना शुरू करते हैं, या ऐसा करने की ओर एक सामान्य धक्का होता है, तो यह अंततः होगा।

तो आपके अंतिम प्रश्न का उत्तर देने के लिए:

क्या हमें बस कोशिश करने और बेहतर प्लगइन डेवलपर्स होने की आवश्यकता है ताकि हम सभी एक साथ अच्छा खेल सकें?

हाँ।


संपादित करें: मैंने वास्तविक प्रश्न और हुक को लागू करने के सर्वोत्तम तरीके के बारे में कुछ और सोचा है, क्या आप एक ऐसी कार्रवाई नहीं जोड़ सकते हैं जो उस विशेष फ़ंक्शन को चलाएगी जिसे आप प्लगइन चलाने की कोशिश कर रहे थे?


यह काम करेगा, लेकिन क्या होगा अगर एक अलग प्लगइन के फ़ंक्शन का नाम समान था?
Arlen Beiler

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

@Arlen - कहते हैं कि आप अपना स्वयं का फ़ंक्शन बना रहे थे जो यह जाँचता है कि कोई विशेष फ़ंक्शन है या नहीं। यह 'plugins_loaded' के बाद चलाया जाएगा, और यदि यह वहां है तो यह एक बूलियन सेट करता है जो सुविधाओं को सक्षम करता है। यह कोड नहीं बदलने पर अत्यधिक निर्भर है, लेकिन मैं यह नहीं देख सकता कि यह काम क्यों नहीं करेगा?
कोई नहीं

0

एक समारोह को परिभाषित:

function my_footer() {
    do_action('my_footer');
}

अब आप इस हुक पर हुक कर सकते हैं: add_action('my_footer', 'example_function', 1);# मेरी पोस्ट पर अधिक informations देखें ।


न => अब, यह अपना => यह। सही बात?
Arlen Beiler

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

@Arlen: बहुत धन्यवाद, मेरे बुरे अंग्रेजी के लिए खेद है @Ryan: यह संभव नहीं है, जब प्लग एक हुक नहीं है; लेकिन आप फ़ंक्शन या क्लास को बदलने के लिए जांच कर सकते हैं, जब लेखक अपने प्लगइन में इसके लिए पूछता है। लेकिन अन्य प्लगिन के रूप में WP में सक्रिय प्लगइन्स और हुक के लिए पूछना संभव है और उनके फ़ंक्शन को प्रतिस्थापित कर सकता है।
bueltge
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.