W jakiej kolejności wtyczki są ładowane do WordPress?
A w jakim folderze wtyczki jest określona kolejność ładowania?
W jakiej kolejności wtyczki są ładowane do WordPress?
A w jakim folderze wtyczki jest określona kolejność ładowania?
Odpowiedzi:
W wp-settings.php
WordPress najpierw sprawdza wszelkie niezbędne wtyczki (wtyczki w opcjonalnym mu-plugins
folderze) i ładuje je.
Następnie, jeśli prowadzisz instalację wielostanowiskową, sprawdza ona wtyczki aktywowane przez sieć i ładuje je.
Następnie sprawdza wszystkie pozostałe aktywne wtyczki, patrząc na active_plugins
pozycję wp_options
tabeli bazy danych, i przegląda je. Wtyczki zostaną wyświetlone alfabetycznie.
Oto kolejność, w jakiej WordPress ładuje prawie wszystko: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
Chodzi o to, że zazwyczaj nie ma znaczenia, w jakiej kolejności ładowana jest każda wtyczka, ponieważ poprawnie napisane wtyczki będą korzystały z haków WordPress, które pozwalają podłączyć funkcjonalność do określonych punktów później podczas uruchamiania WordPress. (Prawidłowo napisane wtyczki będą również poprzedzać ich funkcje i klasy, aby nie było żadnych konfliktów).
Więcej informacji na temat API wtyczek: http://codex.wordpress.org/Plugin_API/
Całkowicie zależy od wtyczki. WordPress ładuje tylko jeden plik do wtyczki, ten, który jest zwykle nazywany the-plugin-name.php
i zawiera tytuł, opis, autora itp. U góry. To do wtyczki, aby załadować resztę swoich plików za pomocą require_once
i wp_enqueue_script
i etażerka.
apply_filters()
do utworzenia haka, ale działa przed wtyczką, która używa add_filter()
, to czy nadal będzie działać? Logicznie wydaje się, że apply_filters()
już wystartował, więc add_filter()
wywołania w drugiej wtyczce nic nie zrobią. Czy ma znaczenie kolejność ładowania wtyczek przy użyciu tylko haków utworzonych przez wtyczki?
apply_filters()
. add_filter()
musi biec wcześniej apply_filters()
. Jeśli add_filter()
znajduje się w pliku wtyczki, a nie w innej funkcji, uruchomi się on na plugins_loaded
zawieszeniu, co na ogół nastąpi zanim będzie to potrzebne apply_filters()
.
the_content
- jak ustala się kolejność ich wyglądu?
Uważam, że użyteczne jest włączenie w mojej wtyczce działania polegającego na „późnym ładowaniu”, które jest uruchamiane po zakończeniu ładowania wszystkich wtyczek w następujący sposób:
add_action('plugins_loaded', 'my_late_loader');
Funkcja my_late_loader jest następnie inicjowana po wszystkich innych wtyczkach, co pozwala mi korzystać z haków zdefiniowanych przez inne wtyczki w mojej własnej funkcji my_other_function, która jest inicjowana w my_late_loader
/**
* Late loading function for actions that must run after all plugins
* have loaded
*/
function my_late_loader(){
add_action( 'some_hook', 'my_other_function', 10, 1);
}
Trochę zawiłe (wiem), ale zapewnia to, że zaczepy w innych wtyczkach są tworzone przed dodaniem, niezależnie od kolejności ładowania wtyczek.