कोड के माध्यम से प्लगइन्स को कैसे सक्रिय करें?


22

यदि संभव हो, तो प्लगइन्स को कैसे स्थापित किया जा सकता है (मतलब फाइलें wp-content / plugins निर्देशिका में रखी गई हैं) अन्य प्लगइन्स से सक्रिय हो सकती हैं?

जवाबों:


30

ऐसा मैंने कुछ वेब ऐप्स में किया है:

function run_activate_plugin( $plugin ) {
    $current = get_option( 'active_plugins' );
    $plugin = plugin_basename( trim( $plugin ) );

    if ( !in_array( $plugin, $current ) ) {
        $current[] = $plugin;
        sort( $current );
        do_action( 'activate_plugin', trim( $plugin ) );
        update_option( 'active_plugins', $current );
        do_action( 'activate_' . trim( $plugin ) );
        do_action( 'activated_plugin', trim( $plugin) );
    }

    return null;
}
run_activate_plugin( 'akismet/akismet.php' );

1
जैसा कि रर्स्ट ने लिखा है, यह बहुत "सुरक्षित" नहीं है। आपको यह सुनिश्चित करना चाहिए कि आपके द्वारा इस तरह से सक्रिय किए गए प्लगइन्स सुरक्षित हैं / आपकी साइट को नहीं तोड़ेंगे।
१०:४६ पर sorich87

10
बिल्कुल भी सुरक्षित नहीं है, लेकिन बिल्ली, अगर आप उन्हें प्रोग्रामेटिक रूप से सक्रिय कर रहे हैं तो आपको पता होना चाहिए कि आप क्या कर रहे हैं। ;-)
डेनिस डी बर्नार्डी

सुरक्षा एक तरफ - मेरा मतलब है, यह सवाल का हिस्सा नहीं है, है ना? - मुझे सॉरीच का दृष्टिकोण पसंद है क्योंकि यह मानक सक्रियण फिल्टर कहता है। इसलिए प्लगइन्स को कुछ होने पर अपने सेटअप रूटीन को चलाने के लिए एक बदलाव मिलता है।
२२:३० बजे हैक्रे

3
यह, कम से कम हाल ही में, पहिया को सुदृढ़ कर रहा है। मैंने बिल्ट-इन का उपयोग किया है activate_plugin(), और यह समान काम करता है।
जेक

1
@SagiveSEO इसकी पूरी तरह से सुरक्षित है - इसके समान है कि WP यह कैसे करता है, उपयोगकर्ता इनपुट / अनुमोदन और फॉर्म नॉन की आवश्यकता को छोड़कर और उन गैर के लिए चेक - बस कहीं भी उस फ़ंक्शन को शुरू करने के लिए आवश्यक जांच शुरू करें - ताकि इसे बाहर से एक्सेस न किया जा सके (से) वेब आदि), और इसे किसी भी तरह से बेतरतीब ढंग से नहीं बुलाया जा सकता है।
1

13

प्लगइन सक्रियण प्रक्रिया को WP व्यवस्थापक इंटरफ़ेस के साथ काम करने के लिए कोडित किया गया है। यह त्रुटियों के साथ प्लगइन्स को सक्षम करने से रोकने के लिए कुछ चेक करता है (लोडिंग शुरू में WP टूट सकता है)।

इसे activate_plugin()फ़ंक्शन ( स्रोत ) द्वारा नियंत्रित किया जाता है जिसे अन्यत्र अनुपयोगी के रूप में प्रलेखित किया जाता है।

तो अगर आप प्लगइन को सक्रिय करना चाहते हैं तो कोड खुद ही अपेक्षाकृत आसान है - active_pluginsउस प्लगइन को शामिल करने के लिए विकल्प बदलना । लेकिन आपको स्क्रैच से संबंधित सक्रियण हुक को फिर से बनाना होगा और सैंडबॉक्स स्टेप के बिना सक्रिय करके ब्रेकिंग साइट को जोखिम में डालना होगा।


7

प्लगइन्स को 'active_plugins' विकल्प में एक सरणी में संग्रहीत किया जाता है। सरणी में सक्रिय प्रत्येक प्लगइन के लिए फ़ाइल पथ है।

एक प्लगइन को सक्रिय करने के लिए आपको यह निर्धारित करने की आवश्यकता है कि यह पथ क्या होगा, फिर उस पथ को पास करें activate_plugin($plugin_path)

यह हालांकि कहा गया आसान है, और (कम से कम 2.9 में) कोर कोड इसे आसान नहीं बनाता है।

इससे पहले कि आप सक्रिय करें_प्लगइन () आपको wp-admin / plugin / से plugin.php फ़ाइल को शामिल करने की आवश्यकता है / शामिल हैं। आपको यह सुनिश्चित करने के लिए भी जांचना चाहिए कि आपका प्लगइन पहले से सक्रिय नहीं है। परिणाम कुछ इस प्रकार है (YMMV):

// Define the new plugin you want to activate
$plugin_path = '/path/to/your/new/plugin.php';
// Get already-active plugins   
$active_plugins = get_option('active_plugins');
// Make sure your plugin isn't active
if (isset($active_plugins[$plugin_path]))
    return;

// Include the plugin.php file so you have access to the activate_plugin() function
require_once(ABSPATH .'/wp-admin/includes/plugin.php');
// Activate your plugin
activate_plugin($plugin_path);

मैं WP 2.9 में उत्पादन पर इसका उपयोग करता हूं और इसका कोई बड़ा मुद्दा नहीं है, लेकिन मेरे परीक्षण में WPMU के साथ बहुत अप्रत्याशित परिणाम थे, इसलिए नेटवर्क इंस्टॉल पर इसका उपयोग करने से सावधान रहें।


एक लंबा समय बीत गया लेकिन अगर आपको याद है, तो इस पर अप्रत्याशित परिणाम क्या था?
सनल कोरकमाज़

मुझे पूरी तरह से याद नहीं है। मुझे लगता है कि यह सिर्फ काम नहीं करता था और मैंने चीजों को हाथ से किया क्योंकि मेरे पास बहुत सारे एमएस साइट नहीं थे।
जर्कलार्क

मैं इसे कैसे निष्पादित करूं? अगर मैं इसे सीधे निष्पादित करता हूं, तो get_option को परिभाषित नहीं किया जाता ...
Janus Troelsen

इसे फ़ंक्शन में जोड़ें। एफपीपी और यह काम करना चाहिए, हालांकि तब भी आपको हमेशा कार्यों में रखना चाहिए और उन्हें "इनिट" या "डब्ल्यूपी" पर हुक करना चाहिए।
jerclarke

3

WP Codex के अनुसार Wordpress plugins को सक्रिय करने के लिए एक फ़ंक्शन प्रदान करता है

function plugin_activation( $plugin ) {
    if( ! function_exists('activate_plugin') ) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }

    if( ! is_plugin_active( $plugin ) ) {
        activate_plugin( $plugin );
    }
}

plugin_activation('akismet/akismet.php');

एथन, मेरे जवाब में क्या गलत है?
मोशोन

किसी उत्तर के लिए सिर्फ कोड पोस्ट करना ठीक है, किसी भी नए प्रोग्रामर के लिए व्याख्या करना कठिन हो सकता है जो आपके उत्तर को पढ़े। इस तरह, ओपी आपके कोड कैसे काम करता है, इस पर बेहतर समझ हो सकती है।
एथन जिन्स ओ'सूलीवन

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