Скелет плагина призванный привнести в ваш код WordPress код много срытой магии. Позволяет повысить порог вхождения джуниоров в проект, ломает сложившие паттерны разработки WordPress.
Исходя из требований современных тенденций веб разработки плагин дает возможность ранее реализованные вещи более сложным образом.
Привносит в свой код все то что все мы так любим.
- Многословность;
- Быть может позднее статическое связывание;
- Возможно кодогенирацию;
- Мое субъективное видение проблем проблем WordPress;
- ООП;
- Навязывает зависимость от сторонних утилит.
Я ещё не определился с полным списком фитч и точно не уверен. Документации на английском скорее всего не будет никогда.
Понадобится перейти в каталог плагинов вашего сайта обычно это
wp-content/plugins/
Далее клонируем этот репозиторий:
git@github.com:petrozavodsky/wordpress-magic-boilerplate.git
И переходим в каталог:
cd wordpress-magic-boilerplate
Выдаем права на выполнение конфигуратора:
chmod +x scaffold.sh
Придумываем имя будущего плагина (например MyPlugin) и исполняем скрипт:
./scaffold.sh MyPlugin
Бинго ! Скелет будущего плагина создан, можно начинать разработку.
- PSR-4 автозагрузка классов;
- PSR-2 Кодстайл;
- Универсальная структура проекта;
- Каркас для базового класса плагина;
- Авторегистрация WordPress виджетов при создании их класса;
- Правильная регистрация и подключение ассетов разом;
- Автоподключение ассетов изходя из названия файлов (css/javascript файлов);
- Возможность облегчить перенос ассетов в нижнюю часть страницы сайта;
- Удобные алиасы хуков;
- Сборщик фронтенда;
- Базовый класс для облегчающий AJAX запросы в WordPress;
- Обертка для легкого создания шорткодов;
- Возможно что то еще.
В ядре WordPress не принято использовать PSR-2 но для плагина он вполне подойдет. В остальном рекомендации wordpress.org хорошие и их можно соблюдать.
Для сборки используется таск менеджер Gulp .
Все ресурсы имеющие отношение к фронтенду находятся в каталоге public/
.
После установки нужно в каталоге плагина нужно выполнить npm install
для установки gulp и плагинов к нему. После установки можно приступить к сборке фронтенда такс gulp js
- минифицирует Javascript файлы в каталоге public/js
и кладет их рядом с оригинальными добавляя *.min.js перед расширением . Javascript файлы в каталоге public/js/vendor
никак не обрабатываются, в него следует помещать сторонние библиотеки.
В качестве препроцессора Less, возможно это не лучший выбор зато не избыточный и компилируется быстро.
Все файлы с расширением *.less в каталоге public/css
компилируются в css файлы с аналогичными именами и расширением *.css
. Запустить процесс можно командой gulp css
.
Команда gulp watch
включает автоматическое слежение за изменением js/css файлов, и при их изменении запускает их компиляцию.
Конкатенация нескольких файлов в один не происходит так как файлы скриптом и стилей обычно выводятся только на страницах сайта требующих их применения. Для объединения файлов в WordPress есть другие инструменты которые могут решить эту проблему и будут работать с такой структурой проекта.
Если в WordPress константа CONCATENATE_SCRIPTS
равна true то будут использованы не минифицированные версии скриптов.
Графические файлы любых типов в каталоге public/images
могут быть минифицированный автоматически, об этом не нужно заботиться в момент их создания. В gulpfile.js есть соответствующий таск.
Внимание семантическое версионирование, между мажорными версиями (когда они появятся) совместимость точно будет ломаться.
PS создавать экземпляры в конструкторе основного класса плагина не обязательно, это сделано для демонстрации