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. Тут згадаю цікаву картинку (дуже вона мені сподобалася):

Порядок завантаження ядра WordPress
Схема завантаження 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»).

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *