У якому порядку WordPress завантажує плагінні файли?


21

У якому порядку завантажуються плагіни в WordPress?

А в папці певного плагіна, який порядок дотримується для завантаження?


Ви можете дуже глибоко налагоджувати цей плагін: https://wordpress.org/plugins/whats-running/ У ньому перераховані всі необхідні файли в WordPress.
Szépe Viktor

Відповіді:


26

Відповідь на перше запитання:

  1. У програмі wp-settings.phpWordPress спочатку перевіряє наявність будь-яких плагінів (плагінів у додатковій mu-pluginsпапці) та завантажує їх.

  2. Потім, якщо ви працюєте з багатосайтовою установкою, вона перевіряє, чи є плагіни, активовані мережею, і завантажує їх.

  3. Потім він перевіряє всі інші активні плагіни, дивлячись на 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.


Отже, якщо я створю плагін, а потім випускаю додатки, які слід запустити після запуску оригінального плагіна, як я можу забезпечити цей порядок?
urok93

Це дійсно залежить від того, що ти намагаєшся робити. Але, як правило, ви налаштували кожен з них на запуск певного гака за допомогою функції addgery (), яка дозволяє встановити пріоритет. codex.wordpress.org/Function_Reference/addgery
SeventhSteel

@SeventhSteel Але що робити, якщо плагін спирається на гачок, створений іншим плагіном. Якщо один плагін використовує apply_filters()для створення гака, але працює перед плагіном, який використовує add_filter(), чи все-таки він працюватиме? Логічно, здається, що apply_filters()вже запустили, тому add_filter()дзвінки у другому плагіні нічого не дадуть. Чи має значення, в якому порядку завантажуються плагіни, коли використовується лише гачок, створений плагіном?
trusktr

Важливо те, що завантажено часом apply_filters(). add_filter()повинні запуститись раніше apply_filters(). Якщо add_filter()у файлі плагіна, а не в іншій функції, він буде працювати на plugins_loadedгачку, що, як правило, відбудеться раніше, ніж вам потрібно apply_filters().
СьомийСтейль

Загальний сценарій - це наявність декількох плагінів, які додають їх вміст після the_content- як визначається порядок їх появи?
Dan Knauss

9

Я вважаю, що корисно включати дію "пізнього завантаження" у свій плагін, який запускається після того, як усі додатки завершили завантаження так:

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);
}

Біт перекручений (я знаю), але це забезпечує, що гачки в інших плагінах створюються перед додаванням незалежно від порядку завантаження плагінів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.