थीम के माध्यम से प्लगइन / प्लगइन कार्रवाई अक्षम करें


19

मैंने अपनी साइट पर Google विश्लेषिकी प्लगइन स्थापित किया है । मैं गैर-स्मार्ट-फोन मोबाइल ब्राउज़रों के लिए डिज़ाइन की गई थीम पर काम करने के लिए मोबाइलप्रेस प्लगइन का उपयोग कर रहा हूं । मैंने इस विषय में उपयोग के लिए मोबाइल के लिए Google विश्लेषिकी की स्थापना की है और एनालिटिक्स प्लगइन को निष्क्रिय करना चाहूंगा क्योंकि इसमें एक बड़ी js फ़ाइल में कॉल शामिल है।

क्या किसी को पता है कि क्या फ़ंक्शंस। एफपी या किसी अन्य विधि का उपयोग करके प्लगइन को अक्षम करना संभव है?

मेरा मानना ​​है कि मैंने पृष्ठ पर फ़ंक्शन को जोड़ने वाले कोड को स्थित किया है, इसलिए यदि पूरे प्लगइन को अक्षम करना संभव नहीं है तो क्या निष्पादन के लिए कार्यों को रोकना संभव है? मैंने उन्हें बिना किसी भाग्य के सीधे अक्षम करने की कोशिश की है। यहाँ प्लगइन फ़ाइल से कोड है:

add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');

मैंने उन कार्यों को हटाने की कोशिश की:

remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');

कोई भी मदद बहुत ही सराहनीय होगी।


मेरे लिए यह तकनीकी रूप से काम करना चाहिए, इसलिए इस कोड को चलाने के आपके समय के बारे में कुछ ऐसा है जो गलत हो जाता है (बहुत जल्दी या बहुत देर से)। कृपया अधिक जानकारी प्रदान करें।
रारस्ट

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

मैं थोड़ा उलझन में हूँ - क्या यह सामान्य के माध्यम से प्लगइन को अक्षम करना आसान नहीं है अगर इसे अच्छे के लिए जाने की आवश्यकता है? जो EAMann का जवाब केवल कोड के द्वारा करता है। मैंने मान लिया कि आप इसे किसी स्थिति में गतिशील रूप से अक्षम करना चाहते थे ...
Rarst

मेरे पास एक नियमित विषय है जो किसी भी सामान्य डेस्कटॉप ब्राउज़र के लिए वर्डप्रेस में सेट है। इस विषय के लिए, मैं GA प्लगइन का उपयोग करना चाहता हूं। Mobilepress प्लगइन यूजर-एजेंट स्ट्रिंग प्राप्त करने के लिए php का उपयोग करता है और एक स्मार्ट-फोन या एक गैर-स्मार्ट-फोन के लिए एक अलग विषय पर कार्य करता है। मैं गैर-स्मार्ट-फोन थीम के लिए फ़ंक्शन का उपयोग करना चाहता था। उस विषय के लिए केवल जेए को <head> में डालने से GA प्लगइन को अक्षम करने के लिए। इसे अभी भी अन्य दो थीम (डेस्कटॉप और स्मार्ट-फोन) के लिए सक्षम करने की आवश्यकता है। यह स्पष्ट करने में मदद करता है?
पीएनएमजी

हां, यही मैंने सोचा था। लेकिन निष्क्रियता केवल प्लगइन को लगातार निष्क्रिय कर देगा और यह तब तक बंद रहेगा जब तक कि यह स्पष्ट रूप से सक्रिय नहीं हो जाता। मैं इसे आपके उपयोग के मामले में फिट नहीं देखता।
रारस्ट

जवाबों:


25

जब वर्डप्रेस एक प्लगइन को सक्रिय करता है, तो यह activate_plugin()फ़ंक्शन को कॉल करता है। यह फ़ंक्शन सैंडबॉक्स में प्लगइन को सक्रिय करता है और सफलता पर कहीं और रीडायरेक्ट करता है। इसका उपयोग कुछ लेखकों द्वारा प्रोग्राम पर निर्भरता निर्भरता को सक्रिय करने के लिए किया जाता है।

एक अन्य फ़ंक्शन है, deactivate_plugin()जो रिवर्स में एक समान काम करता है ... यह वास्तव में है कि कैसे वर्डप्रेस प्लग-इन को निष्क्रिय करता है जब आप "निष्क्रिय" या "अक्षम" पर क्लिक करते हैं।

एक स्थापित प्लगइन को निष्क्रिय करने के लिए, बस कॉल करें:

deactivate_plugins( '/plugin-folder/plugin-name.php' );

या, एक साथ कई प्लगइन्स को निष्क्रिय करने के लिए:

deactivate_plugins( array( '/first-plugin/first.php', '/second-plugin/second.php' ) );

एक दूसरा पैरामीटर है (पहले या तो एक स्ट्रिंग या प्लगइन्स को अक्षम करने के लिए सरणी है) जो आपको प्लगइन्स को निष्क्रिय किए बिना प्लग को अक्षम करने की अनुमति देता है। डिफ़ॉल्ट रूप से, यह गलत पर सेट है, और मैं आपको इसे इस तरह छोड़ने की सलाह देता हूं। जब तक कि किसी कारण से आप निष्क्रियकरण को बायपास नहीं करना चाहते हैं, तब आप करेंगे:

deactivate_plugins( '/plugin-folder/plugin-name.php', true );

यह बस प्लगइन को बंद कर देगा, लेकिन यह निष्क्रिय करने पर पंजीकृत प्लगइन को आग नहीं देगा। तो अगर प्लगइन विकल्प या डीबी तालिकाओं को हटा देता है जब यह निष्क्रिय हो जाता है, तो आप उस जानकारी को संरक्षित करने और इसे कहीं और उपयोग करने के लिए यह "चुप" निष्क्रिय करना चाहेंगे।


महान जवाब - और सिर्फ दूसरे की तुलना में नहीं, चलो कहते हैं, "यहाँ एक वेबसाइट" उत्तर है, जो शायद कहीं पास में हो।
संपादक

यह कोड, functions.php में रखा गया है जो कि व्यवस्थापक में प्लगइन को निष्क्रिय कर देगा जिससे यह अन्य दो विषयों से अक्षम हो जाएगा। धन्यवाद Rarst कि बात के लिए बाहर। मैं इसे केवल एक विषय के लिए अक्षम करना चाहता था जहां फ़ंक्शन .php फ़ाइल स्थित थी।
पीएनएमजी

आप किसी दिए गए साइट पर एक समय में केवल एक विषय का उपयोग कर रहे हैं ... लेकिन यदि आप थीम को निष्क्रिय करने के बाद प्लगइन को फिर से सक्रिय करना चाहते हैं, तो यह भी संभव है।
इमान

11

यह ऊपर EAMann के शानदार जवाब के लिए धन्यवाद है, और मैंने सोचा कि यह मूल पोस्टर के लिए भी उपयोगी हो सकता है ...

मुझे यह सुनिश्चित करने के लिए एक समाधान की आवश्यकता थी कि यदि प्रीमियम संस्करण (संभावित टकरावों से बचने के लिए) को अपलोड किया जाए, तो उपयोगकर्ता मेरे प्लगइन को निष्क्रिय कर दें। पहले मैंने is_plugin_active के साथ इसकी स्थिति का पता लगाया और उपयोगकर्ताओं को इसे बंद करने के लिए संकेत देने के लिए एक व्यवस्थापक त्रुटि संदेश दिखाया। यह बहुत चिकनी है ...

function deactivate_plugin_conditional() {
    if ( is_plugin_active('plugin-folder/plugin-name.php') ) {
    deactivate_plugins('plugin-folder/plugin-name.php');    
    }
}
add_action( 'admin_init', 'deactivate_plugin_conditional' );

नोट: register_activation_hook पर काम नहीं कर रहा था, लेकिन admin_init एक आकर्षण की तरह काम करता है।


1
बस यह ध्यान रखने के लिए कि मुझे पूरा यकीन है कि is_plugin_active पहले से ही डिएक्टिवेट_प्लगिन्स हुक में जांची जा चुकी है, इसलिए इसे दोबारा करने की आवश्यकता नहीं है
ब्रायन विलिस

1

यहां मेरा समाधान है, एक प्लगइन बनाएं जो अन्य प्लगइन्स को अक्षम कर सकता है जैसे:

/*
 * Plugin Name: Disable/Configure Plugins
 * Description: Lets you disable/configure plugins based on environment variables
 * Author:      Chris Sewell
 */

/**
 * Disable specified plugins in development environment.
 * 
 * This is a "Must-Use" plugin. Code here is loaded automatically before regular plugins load.
 * This is the only place from which regular plugins can be disabled programatically.
 * 
 * Place this code in a file in WP_CONTENT_DIR/mu-plugins or specify a custom location 

 * to "development" or "production" in each particular server/environment.
 */

/* Disable specified plugins in development environment */
if (((getenv('environment') == 'production') || (getenv('environment') == 'alpha')) == false) {
    $plugins = array(
        'w3-total-cache/w3-total-cache.php'
    );
    require_once(ABSPATH . 'wp-admin/includes/plugin.php');
    deactivate_plugins($plugins);
}

इसे उत्पादन में धकेलें, इसे सक्षम करें, फिर अपने स्थानीय देव मशीन में डेटाबेस को नीचे लाएं।

स्रोत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.