MU Loader
Набор обязательных (must-use) плагинов для проектов на WordPress.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/dyadkov-wp/mu-plugins/archive/refs/heads/main.zipWordPress mu-plugins
Набор обязательных (must-use) плагинов для новостного сайта на WordPress с темой Newspaper.
Все плагины загружаются автоматически и не могут быть отключены через админку.
Что в репозитории
| Плагин | Назначение |
|---|---|
tagdiv-seo-fix |
Корректная микроразметка (Schema.org NewsArticle, Open Graph, Twitter Cards). Отключает встроенную схему темы Newspaper. |
Список пополняется. Каждый плагин — отдельная папка со своим README.md и CHANGELOG.md.
Структура репозитория
mu-plugins/
├── .editorconfig # настройки редактора (табы в PHP, пробелы в JSON/MD)
├── .gitattributes # нормализация переносов строк (LF)
├── .gitignore # игнорируем vendor/, кэши, IDE
├── LICENSE # MIT на весь репозиторий
├── README.md # этот файл
├── composer.json # dev-зависимости и скрипты
├── composer.lock # зафиксированные версии (коммитим)
├── loader.php # загрузчик плагинов из подпапок
├── phpcs.xml # конфиг PHP_CodeSniffer (WordPress-стандарт)
├── phpstan.neon # конфиг PHPStan
├── vendor/ # dev-зависимости (в .gitignore)
└── tagdiv-seo-fix/
├── tagdiv-seo-fix.php # основной файл плагина
├── README.md # описание плагина
├── CHANGELOG.md # история изменений
└── LICENSE # MIT (для копирования папки в другой проект)
Почему используется loader.php
WordPress не загружает .php-файлы из подпапок mu-plugins автоматически. Он видит только файлы, лежащие непосредственно в корне mu-plugins/.
loader.php решает эту проблему: он находится в корне, WordPress его подхватывает, а уже сам загрузчик подключает остальные плагины из подпапок через require_once.
Это даёт:
- Чистый корень
mu-plugins/— только один файлloader.php. - Каждый плагин в отдельной папке — удобно версионировать через Git.
- Возможность подключать/отключать плагины простым редактированием массива в
loader.php. - Отдельные
README.mdдля каждого плагина прямо в его папке.
Как добавить новый плагин
-
Создайте папку
tagdiv-seo-fix/(или<plugin-name>/). -
Поместите в неё файл
<plugin-name>.phpс заголовком плагина. -
Добавьте путь к файлу в массив
$sitename_mu_pluginsвнутриloader.php:$dyseo_mu_plugins = array( 'tagdiv-seo-fix/tagdiv-seo-fix.php', 'another-plugin/another-plugin.php', ); -
Создайте
README.mdиCHANGELOG.mdв папке плагина. -
Закоммитьте изменения. На сервере достаточно
git pull— плагин подхватится автоматически.
Как обновлять плагины
Поскольку это mu-plugins, обновление идёт только через Git, а не через админку WordPress:
- Локально: правки → коммит → push.
- На сервере:
git pullв директорииwp-content/mu-plugins/. - Либо через CI (GitHub Actions + rsync/SSH) по тегу версии.
Откатить изменение можно через git revert или git checkout <tag> — без риска «сломать» сайт через админку.
Соглашения по именованию
- Папка плагина:
kebab-case, совпадает с именем основного файла. - Основной файл:
<plugin-name>.php. - Префикс констант:
DYSEO_. - Префикс функций и классов: аналогично префиксу констант.
- Все хуки, фильтры и опции — с тем же префиксом, чтобы не конфликтовать с другими плагинами.
- Глобальные переменные в
loader.php— с префиксом$dyseo_.
Разработка
Требования
- WordPress 5.0+.
- PHP 7.4+ (рекомендуется 8.1+).
- Composer 2.x.
- Git на сервере или настроенный CI для деплоя.
Установка зависимостей
Из-за блокировки packagist.org в РФ composer install может упасть в таймаут. Используйте зеркало:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer install
Зеркало настраивается один раз на машине. В composer.json его прописывать не нужно.
Проверки
composer lint # PHPCS по WordPress-стандарту (прогресс + источники ошибок)
composer lint:summary # таблица с файлами и числом ошибок
composer lint:fix # автоисправление через PHPCBF
composer analyse # PHPStan, уровень 5, лимит памяти 1G
composer check # lint + analyse подряд
Все три инструмента настраиваются файлами phpcs.xml, phpstan.neon и composer.json.
Переносы строк
.gitattributes заставляет Git хранить все текстовые файлы с Unix-переносами (\n), даже если редактор сохраняет с \r\n. Это требование WordPress-стандарта и защита от проблем при деплое на Linux-сервер.
.editorconfig подсказывает редакторам правильный стиль: табы для .php, пробелы для .md, .json, .xml, .neon.
Если PHPCS ругается на End of line character is invalid — проверьте настройки редактора. В VS Code: правый нижний угол → CRLF → переключить на LF.
Лицензия
MIT. См. файл LICENSE в корне репозитория.
Код можно свободно использовать, изменять и распространять при условии сохранения текста лицензии и указания авторства. Авторы не несут ответственности за возможный ущерб от использования.