Saya sedang menulis sebuah plugin kecil untuk menghapus beberapa item menu untuk pengguna non-admin dari backend, dan menemukan bahwa plugin saya tidak melakukan apa-apa kecuali saya menentukan prioritas dalam kode saya:
add_action('admin_bar_menu', 'remove_toolbar_items', 999);
Tanpa 999
, kode tidak menghapus item dalam remove_toolbar_items
fungsi saya , dan dengan itu berfungsi dengan baik:
function remove_toolbar_items( $wp_admin_bar ) {
if ( !current_user_can( 'manage_options' ) ) {
$wp_admin_bar->remove_node('new-post');
$wp_admin_bar->remove_node('comments');
}
}
The docs untuk negara parameter prioritas:
Digunakan untuk menentukan urutan fungsi yang terkait dengan tindakan tertentu dijalankan. Angka yang lebih rendah sesuai dengan eksekusi sebelumnya, dan fungsi dengan prioritas yang sama dieksekusi dalam urutan di mana mereka ditambahkan ke tindakan. Nilai standar: 10
Namun saya tidak menemukan apa pun yang menjelaskan bagaimana Anda seharusnya menentukan prioritas untuk digunakan. Bagaimana Anda menentukan kapan harus menggunakan prioritas, dan apa prioritas untuk digunakan? Saya merasa seperti saya bisa menggaruk-garuk kepala selama berjam-jam jika saya tidak mempermainkan parameter prioritas.
Juga, saya melihat bahwa prioritas default adalah 10, tetapi apakah ada rentang nilai prioritas yang diketahui?
WordPress menempatkan tindakan Anda ke dalam array dengan prioritas yang diindeks. Anda dapat melihat ini dengan mencetak (di panel admin
admin_init
)$wp_filter
:* Catatan * seperti yang ditunjukkan oleh @s_ha_dum dalam komentar di bawah ini,
admin_init
mungkin tidak dapat menangkap semua kait yang ditambahkan ke dalam tindakan, cetakan yang lebih andal mungkinshutdown
malah menjadi kait .Ini memberi kita array yang rapi yang terlihat seperti ini: (disederhanakan)
0, 4, 7, 10, dan seterusnya adalah prioritas tindakan, ketika tindakan baru ditambahkan, defaultnya adalah 10, mirip dengan indeks 0 pada contoh di atas, mereka hanya ditumpuk ke dalam indeks array yang sama. . Mempertimbangkan bahwa banyak kait ditambahkan ke dalam tindakan khusus ini yang Anda inginkan di akhir atau akhirnya setelah tindakan tertentu dijalankan (seperti menu). 1 dari dua prioritas juga dapat bekerja sama efektifnya:
81
atau201
.Untuk sebagian besar, prioritas standar 10 sudah cukup. Di lain waktu Anda ingin menambahkan hook Anda secara langsung (untuk mungkin membatalkan tujuan itu atau menghapus item tertentu) di mana Anda dapat menggunakan
global $wp_filter;
untuk mencari tahu ke mana ia harus pergi.sumber
admin_init
dan hanya hal-hal yang terhubung pada instalasi saat ini. Ia tidak mengatakan apa-apa tentang apa yang mungkin dilakukan oleh plugin atau tema yang belum dihapus. Tetap memberi +1.admin_footer
benar? Atau apakah itu masalah yang sama?shutdown
kait akan menjadi taruhan terbaik Anda, tapi hanya untuk kode diinstal dan bahkan kemudian, hal dapat bersyarat ketagihan sehingga mungkin untuk kehilangan beberapa pula.Nah, ada cara untuk menemukan prioritas suatu tindakan.
kita dapat menggunakan kode berikut
has_action( $tag, $function_to_check )
yang secara opsional mengembalikan prioritas pada hook itu untuk fungsi yang ditentukan.Ref: https://codex.wordpress.org/Function_Reference/has_action
sumber
Jika seseorang mencari daftar Prioritas / Referensi Tindakan WordPress, tautan lengkap ada di sini:
https://codex.wordpress.org/Plugin_API/Action_Reference/
sumber