"प्लगइन सक्रिय" संदेश डिफ़ॉल्ट बदलना


11

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

प्लगइन सक्रिय संदेश का स्क्रीनशॉट

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

संबंधित सवाल:

डुप्लिकेट:

इस खोज के लिए पीटर का धन्यवाद:

अतिरिक्त संसाधन:

ध्यान दें

याद रखें कि हालांकि 'गेटटेक्स्ट' फिल्टर केवल translate()फ़ंक्शन के लिए कॉल के दौरान लागू translate()किया जाता है , जिसका उपयोग i18n.php में लगभग सभी अन्य i18n फ़ंक्शन द्वारा किया जाता है । इनमें " गेटटेक्स सिंटेक्स " पर इस पोस्ट में यहां सूचीबद्ध सभी फ़ंक्शन शामिल हैं ।


इस सवाल पर एक नज़र डालें और stackoverflow.com/q/14095642/1908141
Pieter Goosen

जवाबों:


14

आप यह कोशिश कर सकते हैं:

is_admin() && add_filter( 'gettext', 
    function( $translated_text, $untranslated_text, $domain )
    {
        $old = array(
            "Plugin <strong>activated</strong>.",
            "Selected plugins <strong>activated</strong>." 
        );

        $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";

        if ( in_array( $untranslated_text, $old, true ) )
            $translated_text = $new;

        return $translated_text;
     }
, 99, 3 );

अपनी पसंद के अनुसार संदेश को संशोधित करने के लिए:

अनुवाद

हम इसे और परिष्कृत कर सकते हैं:

यदि आप केवल /wp-admins/plugins.phpपृष्ठ पर फ़िल्टर सक्रिय करना चाहते हैं , तो आप इसके बजाय निम्नलिखित का उपयोग कर सकते हैं:

add_action( 'load-plugins.php',
    function(){
        add_filter( 'gettext', 'b2e_gettext', 99, 3 );
    }
);

साथ में:

/**
 * Translate the "Plugin activated." string
 */
function b2e_gettext( $translated_text, $untranslated_text, $domain )
{
    $old = array(
        "Plugin <strong>activated</strong>.",
        "Selected plugins <strong>activated</strong>." 
    );

    $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";

    if ( in_array( $untranslated_text, $old, true ) )
        {
            $translated_text = $new;
            remove_filter( current_filter(), __FUNCTION__, 99 );
        }
        return $translated_text;
}

जहां हमारे पास एक मैच होते ही गेटटेक्स्ट फिल्टर कॉलबैक को हटा दिया जाता है।

यदि हम सही कॉल से मेल खाने से पहले, गेटटेक्स्ट कॉल की संख्या की जांच करना चाहते हैं, तो हम इसका उपयोग कर सकते हैं:

/**
 * Debug gettext filter callback with counter
 */
function b2e_gettext_debug( $translated_text, $untranslated_text, $domain )
{
        static $counter = 0;
        $counter++;

        $old = "Plugin <strong>activated</strong>.";
        $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";
        if ( $untranslated_text === $old )
        {
            $translated_text = $new;
            printf( 'counter: %d - ', $counter );
            remove_filter( current_filter(), __FUNCTION__ , 99 );
        }
        return $translated_text;
}

और मुझे 301अपने इंस्टॉल पर कॉल आए: 301

मैं इसे केवल 10कॉल के लिए कम कर सकता हूं :

10

in_admin_headerहुक के भीतर हुक के भीतर गेटटेक्स्ट फिल्टर जोड़कर load-plugins.php:

add_action( 'load-plugins.php',
    function(){
        add_action( 'in_admin_header',
            function(){
                add_filter( 'gettext', 'b2e_gettext_debug', 99, 3 );
            }
        );
    }
);

ध्यान दें कि यह प्लगइन्स सक्रिय होने पर आंतरिक पुनर्निर्देशन से पहले गेटटेक्स्ट कॉल की गणना नहीं करेगा।

आंतरिक रीडायरेक्ट के बाद अपने फ़िल्टर को सक्रिय करने के लिए हम प्लग के सक्रिय होने पर उपयोग किए जाने वाले जीईटी मापदंडों की जांच कर सकते हैं:

/**
 * Check if the GET parameters "activate" and "activate-multi" are set
 */
function b2e_is_activated()
{
    $return         = FALSE;
    $activate       = filter_input( INPUT_GET, 'activate',       FILTER_SANITIZE_STRING );
    $activate_multi = filter_input( INPUT_GET, 'activate-multi', FILTER_SANITIZE_STRING );

    if( ! empty( $activate ) || ! empty( $activate_multi ) )
        $return = TRUE;

    return $return;
}

और इस तरह का उपयोग करें:

b2e_is_activated() && add_filter( 'gettext', 'b2e_gettext', 99, 3 );

पिछले कोड उदाहरण में।


1
आपने इसे प्राप्त किया, गेटेक्स फ़ंक्शन। शानदार चाल
पीटर गोसन ने

आपने तार्किक और& ऑपरेटर के साथ is_admin () और add_filter () को एक साथ श्रृंखला क्यों बनाया? क्या किसी प्रकार का शॉर्ट-सर्किट मूल्यांकन चल रहा है जहां अगर उपयोगकर्ता व्यवस्थापक नहीं है, तो add_filter नहीं चलेगा?
गेट_इंजीनियर

1
बहुत बढ़िया जवाब! +1 और मैं इसे get_textफ़िल्टर के साथ प्रदर्शन पर नज़र रखने के लिए +10 करूँगा ।
कैसर

1
हाँ जो इसी तरह से काम करना चाहिए @blackhawk
birgire

1
समस्या पुनर्निर्देशित है। 'प्लगइन' की जाँच करें GET पैरामीटर? यदि उपलब्ध नहीं है, तो check_admin_referer और 'सक्रिय-प्लगइन_' को लक्षित करें। $ प्लगइन एक विकल्प लिखने के लिए जो कहता है कि यह सक्रिय हो गया है और फिर इसे plugins.php पृष्ठ लोड पर फिर से हटा दें। शायद हाल ही में सक्रिय विकल्प मदद कर सकता है? बेहतर रूप में एक नया सवाल @Omer परोसा जा सकता है
birgire
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.