हुक्स के साथ डेवलपमेंट

जैसे-जैसे आप वर्डप्रेस हुक्स का उपयोग करके डेवलपमेंट में और गहराई में जाएंगे, हुक्स कैसे काम करते हैं, इसके बारे में कुछ महत्वपूर्ण विवरण समझना योग्य है।

इस पाठ में, आप हुक्स के साथ डेवलपमेंट करते समय पालन करने के लिए कुछ अच्छे अभ्यास (best practices) सीखेंगे।

हुक्स को नाम देना

पहली अच्छी आदत आपके हुक्स का नामकरण करना है। आइए देखें कि वर्डप्रेस कोर किन परंपराओं का पालन करता है।

एक्शन्स

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

उदाहरण के लिए, वर्डप्रेस कोर एक्शन हुक जो एक पोस्ट डिलीट होने पर ट्रिगर होता है, उसे delete_post नाम दिया गया है।.

do_action( 'delete_post' );

यदि आप वास्तविक बदलाव से पहले कोई एक्शन जोड़ना चाहते हैं, तो आप इसे pre_ से उपसर्ग कर सकते हैं।

do_action( 'pre_delete_post' );

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

do_action( 'deleted_post' );

फिल्टर्स

क्यों के फिल्टर्स सामान्य रूप से ऐसे चल (variable) के साथ जुड़े हुए होते है जिस में बदलाव कर सकते है, इस लिए फिल्टर हुक्स कही बार वह ही चल (variable) के नाम पर से नाम दिए जाते है।

उदाहरण के लिए, पोस्ट के कंटेंट में फेरफार करने देने वाले फिल्टर हुक का नाम the_content है।

$content = apply_filters( 'the_content', get_the_content() );

नामकरण से जुड़े विवादों से बचें।

आपके हुक्स को नाम देते समय, अन्य प्लगइन्स या थीम के साथ नामकरण में विवादों से बचना महत्वपूर्ण है।
ऐसा करने के लिए, आप अपने हुक नामों को अपने प्लगइन के नाम या एक अद्वितीय पहचानकर्ता के साथ उपसर्ग कर सकते हैं।

do_action( 'wp_learn_delete_book' );

apply_filters( 'wp_learn_lesson_url', 'https://example.org/lesson' );

फिल्टर के प्रकारों को हैंडल करना

फिल्टर का उपयोग करते समय, फिल्टर से वापस आते चल (variable) का प्रकार गारंटेड होता नहीं, भले वह डॉक्यूमेंटेशन में लिखा हो।

समस्या

इस का कारण ए है की फ़िल्टर पर जो आखिरी कॉलबैक चलता है, वह ही तय करता है की फ़िल्टर द्वारा क्या लौटाया जाता है।

शुरुआत में यह कोई समस्या नहीं लग सकती है, क्योंकि एक डेवलपर के रूप में आप यह सुनिश्चित करेंगे कि उसी प्रकार का मूल्य वापस किया जाए।

हालांकि, यदि आपको कस्टम हुक्स पर पाठ से याद है, तो जिस तरह आप एक्शन और फ़िल्टर में हुक कर सकते हैं, उसी तरह अन्य डेवलपर भी कर सकते हैं।

Flowchart showing data passed through filter and user callbacks.

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

उपाय

इस का उपाय दो भाग में आता है:

आपके फिल्टर के आउटपुट को वैलिडेट करना

कोई भी फिल्टर कॉलबैक में से वापस आता मूल्य जो प्रकार की आप अपेक्षा रखते हो वह ही रहे उस की खात्री करने के लिए सब से अच्छा रास्ता ए है की आप आपके कोड में डेटा प्रकार को वैलिडेट करे।

Integer, float के boolean जैसे प्रिमिटिव (primitive) प्रकारों के लिए, आप PHP की टाइप कास्टिंग सिस्टम का उपयोग कर सकते हैं, ताकि यह सुनिश्चित हो सके कि वापस आता मूल्य सही प्रकार का है:

  • boolean: $is_admin = (bool) apply_filters( 'wp_learn_is_admin', true );
  • integer: $book_count = (int) apply_filters( 'wp_learn_book_count', 10 );
  • float: $base_price = (float) apply_filters( 'wp_learn_base_price', 10.0 );

हालांकि, अधिक जटील वैलिडेशन के अन्य प्रकारों के लिए, मैनुअल वैलिडेशन चेक लागू करना अधिक अच्छा है।

उदाहरण के लिए, string या array के लिए, कास्टिंग का उपयोग करने के बजाय यह जांचना बेहतर होगा कि लौटाया गया मूल्य सही प्रकार का है या नहीं, क्योंकि इससे PHP में घातक त्रुटि (fatal error) आ सकती है।

उदाहरण के लिए, आप PHP के is_string() फंक्शन का उपयोग कर सकते है, जिस से कोई भी हुक किए हुए कॉलबैक में से वापस आया मूल्य string है के नहीं वह चेक कर सकते है:

$book_slug = apply_filters( 'wp_learn_book_slug', 'books' );

if ( ! is_string( $book_slug ) ) {
    // either reset the value or throw an error
}

यदि नहीं, तो आप मूल्य को रीसेट कर सकते है या एक error थ्रो कर सकते है।

आपके कॉलबैक के मूल्य को जांचो

फिल्टर से वापस आते चल (variable) का प्रकार बदल सकते है, इस का मतलब यह भी है की कोई भी हुक किए हुए कॉलबैक में गलत प्रकार का चल (variable) पास किया जा सकता है।

Flowchart showing filter applying multiple callbacks, including user and plugin code

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

add_filter( 'wp_learn_book_slug', 'jon_doe_edit_book_slug' );
function jon_doe_edit_book_slug( $book_slug ) {
    if ( ! is_string( $book_slug ) ) {
        // throw some error because the type is incorrect 
    }

    // continue with your functionality because the type is correct
    return 'book';
}

आप पहले बताई गई विधियों का उपयोग कर मिले हुए चल (variable) के प्रकार को वैलिडेट कर सकते है।

PHP की टाइप जगलिंग के बारे में अधिक जानकारी के लिए आप PHP डॉक्यूमेंटेशन का संदर्भ ले सकते है। 

विभिन्न चल हैंडलिंग फंक्शन्स के लिए एक अलग सेक्शन भी है। 

हुक के बारे में जानकारी प्राप्त करना

हुक्स के बारे में जानने के लिए एक और अच्छी बात यह है कि उनके बारे में जानकारी कैसे प्राप्त करें।

वर्तमान हुक निर्धारित करना

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

इस कारण से, कभी-कभी यह स्पष्ट नहीं हो पाता है कि कॉलबैक वास्तव में किस हुक पर चल रहा है।

कोई भी कॉलबैक फंक्शन में, वर्तमान फ़िल्टर या एक्शन जिस पर कॉलबैक चल रहा है वह तय करने के लिए current_filter के current_action फंक्शन का उपयोग कर सकते है। 

हुक कितनी बार चलाया गया है — यह जांचें

कभी-कभी यह जानना ज़रूरी होता है कि कोई हुक किया गया कॉलबैक पहले ही चल चुका है या नहीं, ताकि उसे दोबारा चलने से रोका जा सके।

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

Suggestions

Found a typo, grammar error or outdated screenshot? Contact us.