Yanıtlar:
Bazı web uygulamalarında şöyle yaptım:
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()
ve aynı iş gibi görünüyor.
Eklenti aktivasyon işlemi WP admin arayüzü ile çalışmak için kodlanmıştır. Eklentilerin hatalı çalışmasını önlemek için bazı kontroller yapar (başlangıçta yükleme WP'yi bozabilir).
Başka yerlerde kullanılamaz olarak belgelenen activate_plugin()
işlev ( kaynak ) tarafından ele alınır .
Bu nedenle, eklentiyi kodla etkinleştirmek istiyorsanız, hedefin kendisi nispeten kolaydır - active_plugins
bu eklentiyi ekleme seçeneğini değiştirmek . Ancak, ilgili etkinleştirme kancalarını sıfırdan yeniden oluşturmanız gerekecektir ve kum havuzu basamağı olmadan etkinleştirerek kırılma bölgesini riske atacaksınız.
Eklentiler 'active_plugins' seçeneğindeki bir dizide saklanır. Dizi, aktif olan her eklentiye dosya yolunu içerir.
Bir eklentiyi etkinleştirmek için, onun yolunun ne olacağını belirlemeniz gerekir, sonra bu yolu iletin activate_plugin($plugin_path)
.
Ancak söylenenden daha kolay, ve (en azından 2.9'da) çekirdek kod bunu kolaylaştırmıyor.
Activate_plugin () işlevini kullanmadan önce plugin.php dosyasını wp-admin / include / dizininden eklemeniz gerekir. Eklentinizin zaten aktif olmadığından emin olmak için kontrol etmelisiniz. Sonuç şöyle gözüküyor (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);
Bunu WP 2.9'daki üretimde kullanıyorum ve önemli bir sorun yaşamadım ancak testlerimde WPMU ile çok beklenmedik sonuçlar aldım, bu yüzden bunu ağ kurulumlarında kullanmaya dikkat edin.
Wordpress WP Kodeksine göre eklentileri etkinleştirmek için bir işlev sunar
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 varsayılan işlevini çağırabilirsiniz.
activate_plugin('akismet/akismet.php');
Daha fazla ayrıntı için lütfen aşağıdaki bağlantıyı kontrol edin.