Podczas ładowania rdzenia waniliowego WP konfigurowany jest bieżący użytkownik, $wp-init()
który jest po załadowaniu motywu i przed init
zaczepieniem. Jest to zgodne z dobrą praktyką polegającą na podłączaniu funkcjonalności init
lub później.
Jednak powszechną praktyką jest również wywoływanie funkcji powiązanych, na przykład current_user_can()
wcześniej . Jest to z definicji wymagane dla wtyczek, które działają na wcześniejszych etapach procesu ładowania (moja wtyczka Toolbar Theme Switcher byłaby przykładem).
Dokumentacja nie wysuwa żadnych roszczeń za lub przeciw tej praktyce (którą mogłem znaleźć).
Jednak niektóre wtyczki wydają się łączyć z funkcjami związanymi z użytkownikiem i przez init
cały czas oczekują stanu po.
Na przykład bbPress rzuca następujące powiadomienie:
// 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' );
}
Aby szybko zademonstrować, wrzuć to do podstawowej definicji current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
Kto ma rację w tej sytuacji? Czy istnieje kanoniczne określenie wcześniejszego dozwolonego / zabronionego użycia funkcji związanych z użytkownikiem init
?