Vanilya WP çekirdek yükü sırasında mevcut kullanıcı, $wp-init()
tema yükünden sonra ve init
kancadan önce kurulmaktadır . Bu, init
veya daha sonra bağlanmak için iyi işlevsellik pratiğine uygundur .
Bununla birlikte, current_user_can()
daha önce olduğu gibi ilgili işlevleri çağırmak da yaygın bir uygulamadır . Tanımlama gereği, yükleme işleminin önceki aşamalarıyla çalışan eklentiler için gereklidir (Araç Çubuğu Tema Değiştirici eklentim bir örnek olacaktır).
Belgeler bu uygulama için veya bu uygulama hakkında herhangi bir iddiada bulunmaz (bulabildiğim).
Bununla birlikte, bazı eklentiler kullanıcıyla ilgili işlevselliğe bağlanmış gibi görünüyor ve post- init
state her zaman bekliyor.
Örneğin bbPress aşağıdaki bildirimi atar:
// 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' );
}
Hızlı tanıtım için bunu çekirdeğin şu tanımına atın current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Bu durumda kim “haklı”? Kullanıcı ile ilgili işlevlerin daha önce izin verilen / yasaklanan kullanımına ilişkin kanonik bir belirleme var init
mı?