Durante la carga principal de Vanilla WP, el usuario actual se está configurando en el $wp-init()
que está después de la carga del tema y antes del init
enlace. Esto está en línea con las buenas prácticas de funcionalidad enganchadas init
o posteriores.
Sin embargo, también es una práctica común llamar a funciones relacionadas, como current_user_can()
antes de eso. Por definición, es necesario para los complementos que funcionan con etapas anteriores del proceso de carga (mi complemento Toolbar Theme Switcher sería un ejemplo).
La documentación no hace reclamos a favor o en contra de esta práctica (que pude encontrar).
Sin embargo, algunos complementos parecen conectarse a la funcionalidad relacionada con el usuario y esperan el init
estado posterior en todo momento.
Por ejemplo, bbPress lanza el siguiente 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 una demostración rápida, incluya esto en la definición central de current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
¿Quién tiene "razón" en esta situación? ¿Existe alguna determinación canónica sobre el uso permitido / prohibido de funciones relacionadas con el usuario anteriormente init
?