Selama vanilla WP core dimuat, pengguna saat ini sedang diatur di $wp-init()
mana setelah memuat tema dan sebelum init
hook. Ini sejalan dengan praktik fungsionalitas yang baik yang dikaitkan dengan init
atau lambat.
Namun itu juga merupakan praktik umum untuk memanggil fungsi terkait, seperti lebih current_user_can()
awal dari itu. Secara definisi, ini diperlukan untuk plugin yang berfungsi dengan tahapan proses pemuatan sebelumnya (plugin Toolbar Theme Switcher saya akan menjadi contoh).
Dokumentasi tidak membuat klaim untuk atau menentang praktik ini (yang dapat saya temukan).
Namun beberapa plugin tampaknya menghubungkan ke fungsi yang berhubungan dengan pengguna dan mengharapkan post- init
state setiap saat.
Misalnya bbPress melempar pemberitahuan berikut:
// If the current user is being setup before the "init" action has fired,
// strange (and difficult to debug) role/capability issues will occur.
if ( ! did_action( 'after_setup_theme' ) ) {
_doing_it_wrong( __FUNCTION__, __( 'The current user is being initialized without using $wp->init().', 'bbpress' ), '2.3' );
}
Untuk demonstrasi cepat, buang ini ke dalam definisi inti tentang current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Siapa yang “benar” dalam situasi ini? Apakah ada tekad kanonik tentang penggunaan yang diizinkan / dilarang fungsi terkait pengguna sebelumnya init
?