Réponses:
Voici comment je l'ai fait dans certaines applications 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()
, et il semble fonctionner de la même manière.
Le processus d'activation du plugin est codé pour fonctionner avec l'interface d'administration WP. Il effectue quelques vérifications pour empêcher l'activation des plugins avec des erreurs (un tel chargement au démarrage peut casser WP).
Il est géré par la activate_plugin()
fonction ( source ) qui est documentée comme inutilisable ailleurs.
Donc, si vous souhaitez activer le plugin par code, l'objectif lui-même est relativement facile - changer l' active_plugins
option pour inclure ce plugin. Mais vous devrez recréer des crochets d'activation associés à partir de zéro et risquer de casser le site en activant sans étape sandbox.
Les plugins sont stockés dans un tableau dans l'option 'active_plugins'. Le tableau contient le chemin d'accès au fichier de chaque plug-in actif.
Pour activer un plugin, vous devez déterminer quel sera son chemin, puis passer ce chemin à activate_plugin($plugin_path)
.
C'est plus facile à dire qu'à faire, et (au moins en 2.9) le code principal ne le rend pas facile.
Avant de pouvoir activate_plugin (), vous devez inclure le fichier plugin.php à partir de wp-admin / includes /. Vous devez également vérifier que votre plugin n'est pas déjà actif. Le résultat ressemble à ceci (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);
Je l'utilise en production dans WP 2.9 et je n'ai pas eu de problème majeur, mais lors de mes tests, il a eu des résultats très inattendus avec WPMU, alors méfiez-vous de l'utiliser sur les installations réseau.
Wordpress fournit une fonction pour activer les plugins, selon 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');
Vous pouvez simplement appeler la fonction par défaut de WordPress.
activate_plugin('akismet/akismet.php');
Veuillez vérifier le lien ci-dessous pour plus de détails.