Durante la carga principal de Vanilla WP, el usuario actual se está configurando en $wp-init()
, que es después de la carga del tema y antes de init
hook. Esto está en línea con la buena práctica de que la funcionalidad se enganche a init
o posterior.
Sin embargo, también es una práctica común llamar a funciones relacionadas, como current_user_can()
anterior que eso. Es, por definición, requerido para los complementos que funcionan con etapas anteriores del proceso de carga (mi complemento para el conmutador de temas de la barra de herramientas sería un ejemplo).
La documentación no hace reclamaciones a favor o en contra de esta práctica (que podría encontrar).
Sin embargo, parece que algunos complementos se enganchan en la funcionalidad relacionada con el usuario y esperan el estado post- init
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 de current_user_can()
del núcleo:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
¿Quién es "correcto" en esta situación? ¿Existe una determinación canónica sobre el uso permitido / prohibido de las funciones relacionadas con el usuario antes de init
?