Jawaban:
Inilah yang saya lakukan di beberapa aplikasi 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()
, dan sepertinya berfungsi sama.
Proses aktivasi plugin dikodekan untuk berfungsi dengan antarmuka admin WP. Itu melakukan beberapa pemeriksaan untuk mencegah mengaktifkan plugin dengan kesalahan (memuat seperti pada awal mungkin merusak WP).
Ini ditangani oleh activate_plugin()
fungsi ( sumber ) yang didokumentasikan sebagai tidak dapat digunakan di tempat lain.
Jadi jika Anda ingin mengaktifkan plugin dengan kode tujuannya sendiri relatif mudah - untuk mengubah active_plugins
opsi untuk memasukkan plugin itu. Tetapi Anda harus membuat kembali kait aktivasi terkait dari awal dan akan berisiko melanggar situs dengan mengaktifkan tanpa langkah kotak pasir.
Plugin disimpan dalam larik di opsi 'active_plugins'. Array berisi path file ke setiap plugin yang aktif.
Untuk mengaktifkan plugin Anda perlu menentukan apa jalan itu akan, maka terjadilah bahwa jalan menuju activate_plugin($plugin_path)
.
Ini lebih mudah diucapkan daripada dilakukan, dan (setidaknya dalam 2.9) kode inti tidak membuatnya mudah.
Sebelum Anda dapat mengaktifkan_plugin () Anda harus menyertakan file plugin.php dari wp-admin / include /. Anda juga harus memeriksa untuk memastikan plugin Anda belum aktif. Hasilnya terlihat seperti ini (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);
Saya menggunakan ini pada produksi di WP 2.9 dan tidak memiliki masalah besar tetapi dalam pengujian saya memiliki hasil yang sangat tak terduga dengan WPMU, jadi berhati-hatilah menggunakan ini pada pemasangan jaringan.
Wordpress menyediakan fungsi untuk mengaktifkan plugin, menurut 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');
Anda cukup memanggil fungsi default WordPress.
activate_plugin('akismet/akismet.php');
Silakan periksa tautan di bawah ini untuk detail lebih lanjut.