Saya mencoba mengaktifkan plugin kedua secara otomatis saat mengaktifkan plugin pertama.
register_activation_hook(__FILE__, 'example_activation' );
function example_activation() {
include_once(ABSPATH .'/wp-admin/includes/plugin.php');
activate_plugin('hello.php');
}
Tidak berfungsi di dalam register_activation_hook .. Ini berfungsi jika saya menggunakannya secara langsung seperti:
include_once(ABSPATH .'/wp-admin/includes/plugin.php');
activate_plugin('hello.php');
Bagaimana saya bisa memperbaikinya? Terimakasih atas bantuannya
Larutan:
Saya menggunakan ini untuk diri saya sendiri sekarang:
// When this plugin activate, activate another plugin too.
register_activation_hook(__FILE__, function(){
$dependent = 'hello.php';
if( is_plugin_inactive($dependent) ){
add_action('update_option_active_plugins', function($dependent){
/* for some reason,
activate_plugin($dependent);
is not working */
activate_plugin('hello.php');
});
}
});
// When this plugin deactivate, deactivate another plugin too.
register_deactivation_hook(__FILE__, function(){
$dependent = 'hello.php';
if( is_plugin_active($dependent) ){
add_action('update_option_active_plugins', function($dependent){
deactivate_plugins('hello.php');
});
}
});
plugins
plugin-development
Ünsal Korkmaz
sumber
sumber
Jawaban:
Untuk penjelasan lengkap tentang apa yang terjadi lihat posting ini (ini untuk menonaktifkan plug-in, tetapi masalahnya sama).
Penjelasan singkat: Plug-in pada dasarnya diaktifkan dengan menambahkannya ke array pug-in aktif yang disimpan dalam database. Saat Anda mengaktifkan plug-in pertama, WordPress mengambil array dari semua plug-in yang saat ini aktif, menambahkan plug-in ke dalamnya (tetapi belum memperbarui database) dan kemudian menjalankan callback instalasi Anda.
Callback instalasi ini menjalankan kode Anda.
Setelah itu WordPress memperbarui database dengan array di atas, yang berisi plug-in pertama tetapi bukan yang kedua. Dengan demikian plug-in kedua Anda tampaknya tidak diaktifkan.
Solusi: telah disebutkan di tautan di atas solusinya adalah seperti ini (belum teruji):
sumber
hello.php
plug-in tes tes lain - berfungsi dengan baik untuk saya). Ingat bahwa jika plug-in ada di subdirektori, Anda harus memberikan folder: misalnyahello/hello.php
.activate_plugin('hello.php');
baris denganactivate_plugin($dependent);
hello.php
array plug-in yang saat ini aktif. Anda tidak dapat meneruskan variabel Anda sendiri ke callback seperti itu. Kecuali Anda menggunakan variabel kelas / global, Anda harus menggunakanactivate_plugin('hello.php');
. Tapi itu seharusnya tidak menjadi masalah ...?Berikut adalah seseorang yang menjelaskan mengapa itu tidak berhasil untuknya, dan bagaimana ia harus menyalin metode activ_plugin dan membuat kebiasaan sendiri tanpa masalah: /programming/1415958/how-to- aktifkan-wordpress-plugins-secara internal
Berikut adalah sumber asli kode activ_plugin, yang dapat Anda gunakan untuk membuat fungsi Anda sendiri dan melihat di mana itu tidak berfungsi untuk Anda: http://hitchhackerguide.com/2011/02/11/activate_plugin/
Berikut ini adalah solusi yang mungkin, yang berisi metode aktivasi plugin alternatif yang mungkin dipangkas orang lain dari kode sumber: Cara Mengaktifkan Plugin melalui Kode?
sumber
activate_plugin
metode default . Anda dapat menggunakantrigger_error
untuk menemukan nilai kembali, dan mempostingnya di sini.