Во время загрузки ядра vanilla WP текущий пользователь настраивается $wp-init()
после загрузки темы и до init
подключения. Это соответствует хорошей практике подключения к функциональности init
или позже.
Однако также является обычной практикой вызывать связанные функции, например, current_user_can()
раньше . Это по определению требуется для плагинов, которые работают с более ранними этапами процесса загрузки (мой плагин панели инструментов Theme Switcher будет примером).
Документация не претендует на или против этой практики (что я мог найти).
Однако некоторые плагины, кажется, подключаются к пользовательской функциональности и ожидают init
состояние post- всегда.
Например, bbPress выдает следующее уведомление:
// 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' );
}
Для быстрой демонстрации добавьте это в определение ядра current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Кто «прав» в этой ситуации? Существует ли каноническое определение о разрешенном / запрещенном использовании пользовательских функций ранее init
?