W wp-settings.phpWordPress najpierw sprawdza wszelkie niezbędne wtyczki (wtyczki w opcjonalnym mu-pluginsfolderze) 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_pluginspozycję wp_optionstabeli bazy danych, i przegląda je. Wtyczki zostaną wyświetlone alfabetycznie.
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).
Całkowicie zależy od wtyczki. WordPress ładuje tylko jeden plik do wtyczki, ten, który jest zwykle nazywany the-plugin-name.phpi zawiera tytuł, opis, autora itp. U góry. To do wtyczki, aby załadować resztę swoich plików za pomocą require_oncei wp_enqueue_scripti etażerka.
Więc jeśli utworzę wtyczkę, to później wypuszczę wtyczki dodatków, które powinny działać po uruchomieniu oryginalnej wtyczki, jak mogę zapewnić tę kolejność?
urok93
To naprawdę zależy od tego, co próbujesz zrobić. Ogólnie rzecz biorąc, każdy z nich można ustawić tak, aby działał na określonym haku za pomocą funkcji add_action (), która pozwala ustawić priorytet. codex.wordpress.org/Function_Reference/add_action
SeventhSteel
@SeventhSteel Ale co, jeśli wtyczka polega na haku utworzonym przez inną wtyczkę. Jeśli jedna wtyczka używa 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?
trusktr
Liczy się to, co załadował czas 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_loadedzawieszeniu, co na ogół nastąpi zanim będzie to potrzebne apply_filters().
SeventhSteel
Częstym scenariuszem jest posiadanie kilku wtyczek, które dołączają ich treść po the_content- jak ustala się kolejność ich wyglądu?
Dan Knauss
9
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.
Odpowiedzi:
Odpowiedź na pierwsze pytanie:
W
wp-settings.php
WordPress najpierw sprawdza wszelkie niezbędne wtyczki (wtyczki w opcjonalnymmu-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/
Odpowiedź na drugie pytanie:
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
iwp_enqueue_script
i etażerka.źródło
apply_filters()
do utworzenia haka, ale działa przed wtyczką, która używaadd_filter()
, to czy nadal będzie działać? Logicznie wydaje się, żeapply_filters()
już wystartował, więcadd_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śniejapply_filters()
. Jeśliadd_filter()
znajduje się w pliku wtyczki, a nie w innej funkcji, uruchomi się on naplugins_loaded
zawieszeniu, co na ogół nastąpi zanim będzie to potrzebneapply_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:
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
Trochę zawiłe (wiem), ale zapewnia to, że zaczepy w innych wtyczkach są tworzone przed dodaniem, niezależnie od kolejności ładowania wtyczek.
źródło