Antworten:
So habe ich es in einigen Web-Apps gemacht:
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()
, und es scheint genauso zu funktionieren.
Der Aktivierungsprozess des Plugins ist so programmiert, dass er mit der WP-Administrationsoberfläche funktioniert. Es werden einige Überprüfungen durchgeführt, um zu verhindern, dass fehlerhafte Plugins aktiviert werden (das Laden solcher Plugins beim Start kann das WP beschädigen).
Es wird von einer activate_plugin()
Funktion ( Quelle ) behandelt, die an anderer Stelle als unbrauchbar dokumentiert ist.
Wenn Sie also das Plugin per Code aktivieren möchten, ist das Ziel selbst relativ einfach zu ändern active_plugins
Option , um das Plugin einzuschließen. Sie müssen jedoch die zugehörigen Aktivierungs-Hooks von Grund auf neu erstellen und riskieren, die Site zu beschädigen, indem Sie sie ohne Sandbox-Schritt aktivieren.
Plugins werden in einem Array in der Option 'active_plugins' gespeichert. Das Array enthält den Dateipfad zu jedem aktiven Plugin.
Um ein Plugin zu aktivieren, müssen Sie den Pfad bestimmen und diesen Pfad an übergeben activate_plugin($plugin_path)
.
Dies ist jedoch leichter gesagt als getan, und (zumindest in 2.9) macht es der Kerncode nicht einfach.
Bevor Sie_plugin () aktivieren können, müssen Sie die Datei plugin.php aus wp-admin / includes / einbinden. Sie sollten auch überprüfen, ob Ihr Plugin noch nicht aktiv ist. Das Ergebnis sieht ungefähr so aus (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);
Ich verwende dies in der Produktion in WP 2.9 und hatte keine größeren Probleme, aber in meinen Tests hatte es sehr unerwartete Ergebnisse mit WPMU. Achten Sie daher darauf, dies bei Netzwerkinstallationen zu verwenden.
Wordpress bietet laut WP Codex eine Funktion zum Aktivieren von 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');
Sie können einfach die WordPress-Standardfunktion aufrufen.
activate_plugin('akismet/akismet.php');
Bitte überprüfen Sie untenstehenden Link für weitere Details.