В каком порядке плагины загружаются в WordPress?
И в какой папке конкретного плагина, какой порядок следования для загрузки?
В каком порядке плагины загружаются в WordPress?
И в какой папке конкретного плагина, какой порядок следования для загрузки?
Ответы:
В wp-settings.php
WordPress сначала проверяет наличие любых обязательных плагинов (плагинов в дополнительной mu-plugins
папке) и загружает их.
Затем, если вы используете многосайтовую установку, он проверяет плагины, которые активированы по сети, и загружает их.
Затем он проверяет все остальные активные плагины, просматривая active_plugins
записи wp_options
таблицы базы данных, и просматривает их. Плагины будут перечислены в алфавитном порядке.
Вот порядок, в котором WordPress загружает практически все: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
Дело в том, что обычно не имеет значения, в каком порядке загружается каждый отдельный плагин, потому что правильно написанные плагины будут использовать ловушки WordPress, которые позволят вам включить функциональность в определенные моменты позже при запуске WordPress. (Правильно написанные плагины также префиксируют свои функции и классы, чтобы не было никаких конфликтов.)
Дополнительная информация об API плагинов: http://codex.wordpress.org/Plugin_API/
Полностью зависит от плагина. WordPress загружает в плагин только один файл, который обычно называется the-plugin-name.php
и содержит заголовок, описание, автора и т. Д. Вверху. Плагин должен загружать оставшиеся файлы, используя require_once
и так далее wp_enqueue_script
.
apply_filters()
для создания хука, но работает перед плагином, который использует add_filter()
, то будет ли он работать? По логике, похоже, что apply_filters()
уже add_filter()
сработал , поэтому вызовы во втором плагине ничего не сделают. Имеет ли значение, в каком порядке плагины загружаются при использовании только созданных плагинами хуков?
apply_filters()
. add_filter()
должен бежать раньше apply_filters()
. Если он add_filter()
находится в файле плагина, а не в другой функции, он будет запущен, plugins_loaded
что обычно происходит раньше, чем вам нужно apply_filters()
.
the_content
- как определяется порядок их появления?
Я считаю, что полезно включить действие «поздняя загрузка» в мой плагин, который запускается после того, как все плагины завершили свою загрузку следующим образом:
add_action('plugins_loaded', 'my_late_loader');
Затем функция my_late_loader запускается после всех других плагинов, что позволяет мне использовать хуки, определенные другими плагинами, в моей собственной функции my_other_function, которая инициируется в 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);
}
Бит извилистый (я знаю), но это гарантирует, что хуки в других плагинах создаются до добавления независимо от порядка загрузки плагинов.