Risposte:
Ecco come l'ho fatto in alcune app Web:
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' );
activate_plugin()
e sembra funzionare allo stesso modo.
Il processo di attivazione del plug-in è codificato per funzionare con l'interfaccia di amministrazione WP. Esegue alcuni controlli per impedire l'abilitazione dei plugin con errori (il caricamento di questo tipo all'avvio potrebbe interrompere WP).
È gestito dalla activate_plugin()
funzione ( sorgente ) che è documentata come inutilizzabile altrove.
Quindi, se si desidera attivare il plug-in in base al codice, l'obiettivo stesso è relativamente semplice: modificare l' active_plugins
opzione per includere quel plug-in. Ma dovrai ricreare da zero i relativi hook di attivazione e rischi di rompere il sito attivando senza passaggio sandbox.
I plugin sono memorizzati in un array nell'opzione 'active_plugins'. L'array contiene il percorso del file per ciascun plug-in attivo.
Per attivare un plugin è necessario determinare quale sarà il suo percorso, quindi passare quel percorso a activate_plugin($plugin_path)
.
Questo è più facile a dirsi che a farsi, e (almeno in 2.9) il codice di base non lo rende facile.
Prima di poter attivare_plugin () è necessario includere il file plugin.php da wp-admin / Includes /. Dovresti anche verificare che il tuo plugin non sia già attivo. Il risultato è simile al seguente (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);
Lo utilizzo durante la produzione in WP 2.9 e non ho riscontrato grossi problemi, ma nei miei test ha avuto risultati inaspettati con WPMU, quindi fai attenzione quando lo usi nelle installazioni di rete.
Wordpress fornisce una funzione per l'attivazione dei plugin, secondo WP Codex
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');
Puoi semplicemente chiamare la funzione predefinita di WordPress.
activate_plugin('akismet/akismet.php');
Si prega di controllare il link qui sotto per maggiori dettagli.