Odpowiedzi:
Tak zrobiłem w niektórych aplikacjach internetowych:
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()
i wydaje się, że działa tak samo.
Proces aktywacji wtyczki jest zakodowany do pracy z interfejsem administratora WP. Przeprowadza pewne kontrole, aby zapobiec włączaniu wtyczek z błędami (ładowanie podczas uruchamiania może spowodować uszkodzenie WP).
Jest obsługiwany przez activate_plugin()
funkcję ( źródło ), która jest udokumentowana jako bezużyteczna w innym miejscu.
Jeśli więc chcesz aktywować wtyczkę kodem, sam cel jest stosunkowo łatwy - zmienić active_plugins
opcję włączenia tej wtyczki. Ale będziesz musiał ponownie utworzyć powiązane haczyki aktywacyjne od zera i zaryzykować przełamanie witryny przez aktywację bez kroku piaskownicy.
Wtyczki są przechowywane w tablicy w opcji „active_plugins”. Tablica zawiera ścieżkę pliku do każdej aktywnej wtyczki.
Aby aktywować wtyczkę, musisz określić jej ścieżkę, a następnie przekazać ją do activate_plugin($plugin_path)
.
Łatwiej to powiedzieć niż zrobić i (przynajmniej w wersji 2.9) kod podstawowy nie ułatwia.
Aby móc aktywować_plugin (), musisz dołączyć plik plugin.php z wp-admin / obejmuje /. Powinieneś również sprawdzić, czy wtyczka nie jest już aktywna. Wynik wygląda mniej więcej tak (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);
Używam tego podczas produkcji w WP 2.9 i nie miałem żadnych poważnych problemów, ale w moich testach przy WPMU przyniosło to bardzo nieoczekiwane rezultaty, więc uważaj na to przy instalacjach sieciowych.
Wordpress zapewnia funkcję aktywacji wtyczek, zgodnie z 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');
Możesz po prostu wywołać domyślną funkcję WordPress.
activate_plugin('akismet/akismet.php');
Proszę sprawdzić poniższy link, aby uzyskać więcej szczegółów.