Saya memiliki plugin yang tidak ingin saya aktifkan jika tidak memenuhi nomor versi WP tertentu lalu tampilkan pesan kesalahan di kait tindakan admin_notices. Sejauh yang saya teliti, kode di bawah ini adalah yang terbaik yang dapat saya capai tujuan ini:
$wp_version = get_bloginfo('version');
if ( $wp_version < 4.5 ) {
add_action( 'admin_init', 'deactivate_plugin_now' );
add_action( 'admin_notices', 'errormsg' ) );
}
public function deactivate_plugin_now() {
if ( is_plugin_active('myplugin/myplugin.php') ) {
deactivate_plugins('myplugin/myplugin.php');
}
}
public function errormsg () {
$class = 'notice notice-error';
$message = __( 'Error you did not meet the WP minimum version', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
}
Tetapi saya pikir saya masih melakukan kesalahan karena saya mendapatkan pesan plugin yang diaktifkan bersamaan dengan pemberitahuan kesalahan yang saya tetapkan.
Apa yang akan menjadi kait tindakan / filter yang tepat untuk menghentikan proses aktivasi plugin dengan benar sehingga saya hanya akan mendapatkan pesan kesalahan?
plugins
plugin-development
Carl Alberto
sumber
sumber
Jawaban:
Saya mungkin terlambat ke pesta ini, tetapi untuk menghentikan aktivasi plugin dan membuat WordPress menunjukkan pesan kesalahan di mana pemberitahuan admin pergi, saya hanya menampilkan pesan kesalahan dan mengakhiri eksekusi. Ini memiliki keuntungan tambahan bermain baik dengan wp-cli :
Contoh:
sumber
Intinya, Anda tidak bisa melakukannya dengan cara yang Anda inginkan. Semua bentuk wordpress mengarahkan ulang setelah menyelesaikan proses mereka dan tidak menghasilkan output sendiri dan karenanya pesan kesalahan dihasilkan pada permintaan halaman yang berbeda. Jika plugin Anda tidak akan aktif pada saat itu, tidak akan ada pesan yang ditampilkan. Komplikasi lebih lanjut adalah bahwa plugin mungkin diaktifkan oleh Ajax.
Cara yang jelek tapi berfungsi adalah gagal aktivasi dengan menghasilkan kesalahan php, atau IIRC output apa pun akan dilakukan, jadi Anda bisa menampilkan sesuatu seperti "versi mismatch" di kait aktivasi plugin, yang akan ditampilkan di kotak output kesalahan yang sedang ditampilkan ketika aktivasi gagal.
Sesuatu untuk dipikirkan: orang mungkin menyertakan file plugin Anda, atau entah bagaimana mengaktifkannya secara paksa dengan memintas UI, atau menggunakan wp-cli. tergantung pada alasan Anda ingin gagal aktivasi, hanya memiliki pesan kesalahan mungkin lebih baik daripada mencoba untuk gagal aktivasi
sumber
Karena Anda memperbarui judul saya perlu memberikan jawaban yang lain, yang sebelumnya tolong jangan abaikan karena itu bahkan lebih sederhana daripada yang ini.
Harap dicatat bahwa ketika Anda mencoba untuk mengaktifkan plugin Anda berinteraksi dengan file plugins.php. Di sana Anda memiliki banyak tindakan yang dapat Anda jalankan.
Dan jika Anda memiliki kesalahan yang ditetapkan
$_GET['error']
saat ini Anda hanya memiliki pesan kesalahan yang telah ditentukan - Anda tidak dapat membuat pesan khusus Anda sendiri. Inilah sebabnya saya mengusulkan Anda solusi seperti ini.Seseorang dapat mengusulkan pesan khusus sebagai pemberitahuan admin ke inti WordPress jika plugin tidak memenuhi beberapa persyaratan.
sumber
admin_notices
tidak diaktifkan.Bagaimana dengan kode ini untuk menekan hello.php (Hello Dolly) jika WP <8.5:
Saya pikir ini bagus karena tidak memaksa Anda untuk membuat pemberitahuan admin. Anda hanya akan mendapatkan umpan balik tentang alasan aborsi dari pemasangan plugin.
Saya menambahkan kode ini untuk HelloDolly, tetapi Anda harus menyesuaikan.
sumber