У якому порядку завантажуються плагіни в 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);
}
Біт перекручений (я знаю), але це забезпечує, що гачки в інших плагінах створюються перед додаванням незалежно від порядку завантаження плагінів.