Відповіді:
Ось як я це робив у деяких веб-додатках:
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()
, і, здається, працює так само.
Процес активації плагіна кодується для роботи з інтерфейсом адміністратора WP. Він виконує деякі перевірки, щоб запобігти включенню плагінів з помилками (завантаження таких при запуску може порушити WP).
Він обробляється activate_plugin()
функцією ( джерелом ), яка документально підтверджена як непридатна в іншому місці.
Тож якщо ви хочете активувати плагін за кодом, сама мета порівняно проста - змінити active_plugins
варіант, щоб включити цей плагін. Але вам доведеться заново створити пов'язані гачки активації з нуля, і ви ризикуєте зламати сайт, активуючи без кроку пісочниці.
Плагіни зберігаються в масиві в опції "active_plugins". Масив містить шлях до файлу до кожного активного плагіна.
Щоб активувати плагін, потрібно визначити, яким буде шлях, а потім пройти цей шлях activate_plugin($plugin_path)
.
Це простіше сказати, ніж зробити, хоча, і (принаймні, в 2.9) основний код не робить це простим.
Перш ніж ви можете активувати_plugin (), вам потрібно включити файл plugin.php від wp-admin / include /. Слід також перевірити, чи ваш плагін ще не активний. Результат виглядає приблизно так (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, тому будьте обережні, використовуючи це для встановлення в мережі.
Wordpress забезпечує функцію активації плагінів, згідно 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');
Ви можете просто викликати функцію за замовчуванням WordPress.
activate_plugin('akismet/akismet.php');
Будь ласка, перегляньте посилання нижче для отримання більш детальної інформації.