Pendant le chargement de base de WP vanilla, l'utilisateur actuel est configuré dans $wp-init()
lequel est après le chargement du thème et avant le init
crochet. Cela est conforme à la bonne pratique consistant à accrocher les fonctionnalités init
ou ultérieurement.
Cependant, il est également courant d'appeler des fonctions connexes, telles que current_user_can()
plus tôt que cela. Il est par définition requis pour les plugins qui fonctionnent avec les étapes précédentes du processus de chargement (mon plugin Toolbar Theme Switcher en serait un exemple).
La documentation ne fait aucune réclamation pour ou contre cette pratique (que j'ai pu trouver).
Cependant, certains plugins semblent se connecter à des fonctionnalités liées à l'utilisateur et attendent l' init
état postérieur à tout moment.
Par exemple, bbPress lance l'avis suivant:
// 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' );
}
Pour une démonstration rapide, insérez ceci dans la définition de base de current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Qui a «raison» dans cette situation? Existe-t-il une détermination canonique sur l'utilisation autorisée / interdite des fonctions liées à l'utilisateur auparavant init
?