Durante o carregamento principal do WP vanilla, o usuário atual está sendo configurado, $wp-init()
após o carregamento do tema e antes do init
gancho. Isso está de acordo com as boas práticas de funcionalidade conectadas init
ou posteriores.
No entanto, também é prática comum chamar funções relacionadas, como as current_user_can()
anteriores . Por definição, é necessário para plug-ins que funcionam com estágios anteriores do processo de carregamento (meu plug-in do Toolbar Theme Switcher seria um exemplo).
A documentação não faz nenhuma reivindicação a favor ou contra essa prática (que eu pude encontrar).
No entanto, alguns plugins parecem se conectar à funcionalidade relacionada ao usuário e esperam o init
estado pós- estado o tempo todo.
Por exemplo, o bbPress lança o seguinte aviso:
// 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' );
}
Para uma demonstração rápida, jogue isso na definição principal de current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Quem está "certo" nessa situação? Existe uma determinação canônica sobre o uso permitido / proibido de funções relacionadas ao usuário antes init
?