Must-Use плагіни в WordPress
Must-use plugins (mu-plugins) – обов’язкові для використання плагіни – це плагіни, які встановлюються в спеціальну папку /wp-content/mu-plugins
. Вони активуються автоматично для сайту та сайтів мережі, точніше, такі плагіни завжди активні.
Їх неможливо відключити через адмінку. Для відключення потрібно видалити файл плагіна з каталогу wp-content/mu-plugins
.
WordPress автоматично підключає всі php файли з папки/wp-content/mu-plugins
. Вкладені папки всередині папки mu-plugins не перевіряються. Підключення php файлів із вкладених папок має прописуватися вручну, у файлі, який знаходиться безпосередньо в папці /mu-plugins
.
mu-plugins відображаються у верхньому інформаційному рядку адмін-панелі.
Зміна каталогу MU плагінів
Каталог обов’язкових плагінів можна змінити. Для цього необхідно визначити константи: WPMU_PLUGIN_DIR
і WPMU_PLUGIN_URL
у файлі wp-config.php .
Плюси і мінуси
Плюси «необхідних» плагінів
Завжди включені , немає потреби активувати їх в адмін-панелі. Користувачі не можуть їх відключити навмисно чи випадково.
Легко підключати та активувати , для цього просто потрібно додати файл плагіна до каталогу
wp-content/mu-plugins
.- Завантажуються на ранньому етапі завантаження WordPress – до того, як завантажаться звичайні плагіни. Файли підключаються за абеткою.
Недоліки «необхідних» плагінів
Найчастіше немає необхідності використовувати ці плагіни, тому що звичайні плагіни зручніші.
Не перевіряються на наявність оновлень , а отже, при появі нової версії плагіна ми не побачимо повідомлення про необхідність оновити плагін. Тому слідкувати за появою нової версії потрібно самостійно;
Хуки активації/деактивації плагіна не спрацьовує , адже саме на них вішаються події пов’язані із встановленням плагіна або його видаленням. Тому при активації додавати таблиці або опції в базу даних і робити інші дії, а при деактивації видаляти все, що пов’язано з плагіном з бази даних та файлів, доведеться самостійно.
WordPress шукає php файли в каталозі my-plugin і робить це не так, як для звичайних плагінів – не переглядає файли всередині вкладених папок. У цьому випадку потрібно буде створити завантажувальний файл у каталозі my-plugin, щоб він підключав файли з підкаталогів, ось так:
// mu-plugins/load.php require WPMU_PLUGIN_DIR .'/my-plugin/my-plugin.php';
Коли може стати в нагоді використовувати mu плагіни?
У випадках, коли це зручніше за звичайний плагін… Я, наприклад, нещодавно помістив код у вигляді такого плагіна, щоб встановити 301 редиректи зі старих URL, коли змінював ЧПУ на вже давно робочому сайті. Це здалося мені найкращим рішенням, адже:
- вставляти такий редирект у тему неправильно – раптом тему змінять і всі редиректи зникнуть.
- якщо встановити як звичайний плагін, то якщо випадково його відключити всі редиректи зникнуть, а цього можна не помітити.
Як це працює?
MU плагіни завантажуються раніше, ніж звичайні. Давайте подивимося схему завантаження WordPress. Тут згадаю цікаву картинку (дуже вона мені сподобалася):
Що стосується коду, як безпосередньо підключаються файли. Дивіться фрагмент коду, що відповідає за MU плагіни, з файлу теми wp-settings.php:
// Завантажуємо MU плагіни. foreach (wp_get_mu_plugins() as $mu_plugin) { include_once ($ mu_plugin); } unset($ mu_plugin);
Код функції wp_get_mu_plugins() :
function wp_get_mu_plugins() { $ mu_plugins = array(); if (!is_dir( WPMU_PLUGIN_DIR ) ) return $mu_plugins; if ( ! $dh = opendir( WPMU_PLUGIN_DIR ) ) return $mu_plugins; while (( $plugin = readdir( $dh ) ) !== false ) { if ( substr( $plugin, -4 ) == '.php' ) $mu_plugins[] = WPMU_PLUGIN_DIR . '/'. $plugin; } closedir($dh); sort($ mu_plugins); return $mu_plugins; }
Як бачимо, директорія WPMU_PLUGIN_DIR перевіряється існування. Якщо вона існує з неї збираються всі файли .php , сортуються за алфавітом (за зростанням) і послідовно підключаються.
Історія появи Must-Use плагінів
Спочатку каталог mu-plugins був створений для плагінів мережі WPMU (Multi-User), щоб дати можливість адміністраторам активувати плагіни для всієї мережі сайтів або блогів. На той момент ця функція була необхідна через специфіку мультисайтового складання: адміністратори не могли активувати плагіни для всієї мережі з адмін-панелі. З версії 2.8 це стало можливим.
Код, що відповідає за multi-user-plugins (mu-plugins), був перенесений в основний код WordPress. А незадовго до цього база коду wpmu була об’єднана з основним складанням WordPress і всі сайти, незалежно від складання, отримали можливість автоматично завантажувати плагіни, і стало неважливо простим це WP або WP-Multisite. Така можливість зручніша для всіх видів установок WordPress і для різних ситуацій, пов’язаних зі створенням сайту.
Внаслідок цієї зміни назва “mu-plugins” перестала відповідати дійсності, тому що тепер mu-plugins працювали і для звичайного складання. Префікс “mu” більше не означав, що ця функція відноситься до розрахованої на багато користувачів збірці – WPMU. Незважаючи на це, назву вирішили залишити, але інтерпретувати її інакше “Must-use plugins” (плагіни обов’язкового використання). Тобто. це необхідні плагіни – плагіни, які завжди повинні використовуватися. Вони працюють для всіх сайтів і не залежать від плагінів до адмін-панелі.
З PHP було щось схоже: колись абревіатура PHP означала “Personal Home Page”, але потім була переінтерпретована як “PHP Hypertext Preprocessor” і, в дусі хакерських традицій, перетворилася на рекурсивний акронім.
Акронім – вид абревіатури. Є словом, що є скороченням, яке можна вимовити разом, на відміну від інших видів абревіатур, які вимовляють «за буквами», наприклад: КДБ — [ка-ге-бе].
Рекурсивний акронім – акронім, який посилається він.
Серед комп’ютерних хакерів стало традиційним вибирати акроніми, які опосередковано чи безпосередньо посилаються він. Одним з ранніх прикладів є TINT, що з’явилася в 1977: «TINT Is Not TECO» («TINT — це не TECO»).