Під час завантаження ядра ванільної WP встановлюється поточний користувач, $wp-init()
який знаходиться після завантаження теми та перед init
гаком. Це узгоджується з хорошою практикою функціонування, яка підключається init
чи пізніше.
Однак також звичайна практика викликати пов'язані функції, такі як current_user_can()
раніше . Це за визначенням, необхідне для плагінів, які працюють з більш ранніми етапами процесу завантаження (приклад мій плагін Перемикача теми буде прикладом).
Документація не пред'являє жодних претензій щодо або проти цієї практики (що я міг знайти).
Однак деякі плагіни, схоже, підключаються до функціональних можливостей користувачів, і очікують, що пост буде init
постійно.
Наприклад, 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
?