Durante il caricamento del core WP vanilla l'utente corrente viene impostato in $wp-init()
cui si trova dopo il caricamento del tema e prima init
dell'hook. Ciò è in linea con le buone pratiche di funzionalità che vengono agganciate init
o successive.
Tuttavia è anche pratica comune chiamare funzioni correlate, come current_user_can()
prima . È per definizione necessario per i plug-in che funzionano con le fasi precedenti del processo di caricamento (il mio plug-in Temi barra degli strumenti sarebbe un esempio).
La documentazione non fa affermazioni a favore o contro questa pratica (che ho potuto trovare).
Tuttavia, alcuni plugin sembrano agganciarsi alla funzionalità relativa all'utente e si aspettano sempre lo init
stato post .
Ad esempio bbPress genera il seguente avviso:
// 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' );
}
Per una rapida dimostrazione, inseriscilo nella definizione di core di current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Chi ha "ragione" in questa situazione? Esiste una determinazione canonica sull'uso consentito / proibito delle funzioni correlate all'utente prima init
?