Must-Use плагины (mu-plugins) — это обязательные плагины для WordPress, которые размещаются в специальной папке wp-content/mu-plugins
. Эти плагины автоматически активируются на сайте и не могут быть отключены через панель администратора. В этой статье мы рассмотрим как создать и использовать Must-Use плагины.
- 1. Что такое Must-Use плагины и как они работают
- 2. Преимущества и недостатки MU-плагинов
- 3. Когда стоит использовать Must-Use плагины
- 4. Создание MU-плагина с примерами
- 6. Особенности обновления MU-плагинов
- 7. Управление зависимостями для MU-плагинов
- 8. Совместимость MU-плагинов с мультисайтом (WordPress Multisite)
- 9. Инструменты для разработки и отладки MU-плагинов
- Заключение
1. Что такое Must-Use плагины и как они работают
Must-Use (MU) плагины предназначены для автоматической активации на всех сайтах установки WordPress. Их уникальность в том, что они загружаются раньше обычных плагинов и всегда активны. Основные характеристики MU-плагинов:
- Автоматическая активация. Плагин начинает работать сразу после добавления его файла в папку
wp-content/mu-plugins
. - Отсутствие возможности отключения через админку. Отключение возможно только путем удаления файла из каталога
mu-plugins
. - Алфавитный порядок загрузки. Все файлы загружаются по алфавиту, что позволяет управлять последовательностью выполнения кода.
Примечание: Поддерживаются только PHP файлы, находящиеся непосредственно в каталоге
mu-plugins
, и вложенные папки не проверяются.
2. Преимущества и недостатки MU-плагинов
Преимущества
- Гарантированная активность. MU-плагины невозможно случайно отключить, что важно для критически важных функций сайта.
- Ранний запуск. Эти плагины загружаются до обычных плагинов, обеспечивая приоритетное выполнение их кода.
- Удобство установки. Достаточно добавить файл в папку
mu-plugins
, и он автоматически активируется на сайте.
Недостатки
- Отсутствие автоматических обновлений. WordPress не уведомляет о доступных обновлениях для MU-плагинов, что требует ручной проверки и обновления.
- Отсутствие активационных хуков. Многие плагины используют активационные хуки для выполнения начальных настроек, но MU-плагины их не поддерживают. Это может ограничить их функциональность.
- Необходимость ручного подключения вложенных файлов. WordPress автоматически подключает только файлы в корне папки
mu-plugins
. Вложенные файлы требуют создания загрузочного файла.
Пример: Загрузочный файл для подкаталогов
Для подключения файлов из подкаталогов создайте загрузочный файл, например, load.php
, который подключит нужные файлы вручную:
// wp-content/mu-plugins/load.php
require WPMU_PLUGIN_DIR . '/my-plugin/my-plugin.php';
3. Когда стоит использовать Must-Use плагины
MU-плагины удобны в следующих ситуациях:
- Для постоянных перенаправлений. Например, если вы настраиваете 301 редиректы, MU-плагин гарантирует, что перенаправления всегда будут активны, даже если тема будет изменена.
- Критические настройки сайта. Использование MU-плагинов позволяет защитить важные настройки от случайного отключения.
- Функциональность на уровне сервера. MU-плагины идеально подходят для добавления серверных функций, таких как кэширование, подключение аналитики или реализация особых условий безопасности.
4. Создание MU-плагина с примерами
Рассмотрим несколько практических примеров создания MU-плагинов для различных задач. Каждый из них добавляет важные функции, которые всегда должны быть активны на сайте.
Пример 1: Постоянный редирект на главную страницу
Создайте файл redirect-to-home.php
в папке mu-plugins
(эта папка создается рядом с plugins
, то есть в каталоге wp-content
), чтобы перенаправлять всех пользователей, не являющихся администраторами, на главную страницу. Это может быть полезно, если сайт временно закрыт на обслуживание.
<?php
/*
Plugin Name: Redirect Must-Use Plugin
Description: Постоянный редирект на главную страницу для не админов
Author: Genius.Courses
Author URI: https://genius.courses/
Plugin URI: https://genius.courses/
Version: 1.0
*/
// этот файл должен быть в: wp-content/mu-plugins/redirect-to-home.php
add_action('template_redirect', function () {
if (!current_user_can('administrator') && !is_home()) {
wp_redirect(home_url());
exit;
}
});
Объяснение кода: Функция проверяет, является ли текущий пользователь администратором. Если нет, и он не находится на главной странице, выполняется редирект на главную.
Пример 2: Отключение REST API для гостей
REST API предоставляет доступ к данным сайта, и в некоторых случаях может потребоваться его отключение для неавторизованных пользователей. Создайте файл disable-rest-api.php
:
<?php
// wp-content/mu-plugins/disable-rest-api.php
add_filter('rest_authentication_errors', function ($result) {
if (!is_user_logged_in()) {
return new WP_Error('rest_forbidden', 'REST API доступен только авторизованным пользователям', ['status' => 403]);
}
return $result;
});
Объяснение кода: Фильтр
rest_authentication_errors
позволяет ограничить доступ к REST API, возвращая ошибку для неавторизованных пользователей.
Пример 3: Автоматическое удаление ревизий записей
Частое редактирование постов накапливает множество ревизий, которые занимают место в базе данных. Создайте MU-плагин для автоматического удаления старых ревизий:
<?php
// wp-content/mu-plugins/cleanup-revisions.php
add_action('wp_scheduled_delete', function () {
global $wpdb;
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL 30 DAY");
});
Объяснение кода: Код удаляет ревизии старше 30 дней при каждом запуске запланированной задачи
wp_scheduled_delete
, что помогает снизить нагрузку на базу данных.
Пример 4: Установка лимита для загрузок
Если на сайте установлены строгие правила для медиа, можно ограничить максимальный размер загружаемых файлов. Создайте файл upload-limit.php
:
<?php
// wp-content/mu-plugins/upload-limit.php
add_filter('upload_size_limit', function ($size) {
return 2 * 1024 * 1024; // Ограничение на 2 МБ
});
Объяснение кода: Используется фильтр
upload_size_limit
, чтобы установить максимальный размер файла при загрузке. В данном случае он ограничен до 2 МБ.
Изменение каталога для MU-плагинов
По умолчанию MU-плагины находятся в каталоге wp-content/mu-plugins
. Однако WordPress позволяет изменить его расположение. Чтобы сделать это, добавьте следующую строку в файл wp-config.php
:
define('WPMU_PLUGIN_DIR', '/путь/к/вашему/каталогу');
define('WPMU_PLUGIN_URL', 'https://ваш-сайт.com/путь/к/каталогу');
Примечание: Изменение каталога для MU-плагинов требует соответствующего физического перемещения всех файлов в новый каталог.
6. Особенности обновления MU-плагинов
Так как MU-плагины не отображаются на экране обновлений WordPress и не могут обновляться автоматически, их обновление необходимо проводить вручную. Вот несколько рекомендаций по поддержке актуальности MU-плагинов:
- Регулярная проверка актуальности. Рекомендуется периодически проверять сайт разработчика или репозиторий с исходным кодом на наличие обновлений.
- Резервное копирование перед обновлением. Перед обновлением MU-плагинов всегда создавайте резервную копию сайта, чтобы иметь возможность восстановить его в случае ошибки.
- Создание собственной версии плагина. Если MU-плагин был настроен под специфические нужды сайта, важно отслеживать изменения в оригинальном коде и аккуратно вносить обновления.
7. Управление зависимостями для MU-плагинов
Если MU-плагин зависит от других плагинов или библиотек, следует учитывать:
- Проверка наличия зависимостей. Если ваш MU-плагин требует установленного плагина, можно добавить проверку наличия этого плагина с использованием функции
is_plugin_active()
. - Автоподключение зависимостей. Если ваш MU-плагин требует определенной библиотеки, вы можете включить её прямо в код MU-плагина или создать отдельный файл в папке MU-плагинов, подключающий требуемые зависимости.
Пример:
// wp-content/mu-plugins/dependency-check.php
if ( !is_plugin_active( 'example-plugin/example-plugin.php' ) ) {
// Сообщение в админке или лог ошибки
error_log( 'Необходимо установить и активировать Example Plugin для корректной работы.' );
}
8. Совместимость MU-плагинов с мультисайтом (WordPress Multisite)
В сетевых установках WordPress (Multisite) MU-плагины могут быть особенно полезны, так как они автоматически активируются на всех сайтах сети. Но есть некоторые особенности:
- Глобальные функции. MU-плагины могут задавать глобальные правила для всех сайтов сети, такие как ограничения доступа или централизованные перенаправления.
- Настройка на уровне сети. Некоторые MU-плагины могут проверять конкретные сайты в сети и выполнять определенные действия только на них, что добавляет гибкости при работе с Multisite.
9. Инструменты для разработки и отладки MU-плагинов
Для более эффективной работы с MU-плагинами можно использовать ряд инструментов и подходов:
- WP-CLI. Позволяет выполнять команды управления плагинами и настройками сайта из командной строки.
- Отладка с помощью WP_DEBUG. Включите режим отладки WordPress, добавив в
wp-config.php
:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // Логи сохранятся в файле wp-content/debug.log
Это поможет выявить ошибки и несовместимости в коде MU-плагина.
- Логирование ошибок. Используйте встроенные функции PHP для логирования, чтобы отследить выполнение кода и исключить ошибки:
error_log( 'Сообщение об ошибке' );
Заключение
Must-Use плагины предоставляют полезные возможности для создания постоянных и обязательных функций сайта в WordPress. Они особенно удобны для настройки безопасности, перенаправлений, ограничений доступа и автоматических задач, которые должны всегда оставаться активными.