WP Bootstrapper — плагин для WordPress

Задача Замените множество вызовов add_action, с которых начинается каждый плагин, и создайте на его основе единый фундамент для всех сайтов.

Все плагины WordPress начинаются одинаково: с файла add_action Количество вызовов растет до тех пор, пока никто не сможет сказать, какие из них все еще срабатывают. WP Bootstrapper — это основа, заменяющая этот файл, и он опубликован как открытый исходный код под лицензией GPL-3.0.

Источник, выпуски и релизы: github.com/kostyasorokin/wp-bootstrapper

Крючки указаны там, где они используются.

Метод указывает, какие запросы он прослушивает, в атрибуте PHP, расположенном непосредственно над ним, с указанием приоритета и количества аргументов. Список регистрации исчезает, и ответ на вопрос “что запускается?» становится неясным. инициализация”Это превращается в поиск, а не в акт запоминания».

Атрибут является повторяемым, поэтому один метод может обслуживать несколько хуков, не будучи обернутым дважды. Обнаружение выполняется один раз с помощью рефлексии по дереву исходного кода и записывается в сгенерированный PHP-файл, который затем считывается последующими запросами вместо повторной рефлексии.

Что именно откладывается

Стоит уточнить, потому что легко утверждать больше, чем есть на самом деле. Каждый обработчик в кэше регистрируется при каждом запросе — эта часть не откладывается и не может быть отложена, поскольку WordPress должен знать о существовании обработчика до того, как он сработает.

Откладывается создание объекта. Класс создается при первом фактическом выполнении одного из его обработчиков, а класс, обработчики которого никогда не срабатывают при данном запросе, вообще не создается. При административном запросе это означает, что классы фронтенда ничего не стоят, кроме замыкания, хранящего их имя.

Настройки без шаблонного кода

Административная страница описывается, а не собирается: вкладки, разделы и поля представляют собой объекты, тип которых определяется перечислением (enum), а отрисовка, регистрация и очистка данных следуют из описания.

Суть не в краткости. В настройках, написанных от руки, для каждого поля накапливается свой фильтр, и тот, который забывается, имеет значение — описание поля вместо его написания гарантирует, что оно не будет забыто.

Что входит в комплект

Помимо базовой структуры, существует набор модулей, которые так или иначе необходимы каждому сайту, и каждый из них написан на основе одной и той же системы атрибутов: защита, очистка заголовка документа, оптимизация административной панели, cookie, cron, пользователи, загрузка файлов и редактор.

Интеграции для Contact Form 7 и TranslatePress находятся в отдельной папке, поэтому на сайте, где не используются ни одна из этих интеграций, ни одна из них не будет присутствовать.

Роли

Разработчик
Konstantin Sorokin

Выполнено
  • Архитектура плагинов и разработка на PHP.
  • Система перехвата событий, управляемая атрибутами, с использованием рефлексии и сгенерированного кэша.
  • Отложенное создание объекта для зарегистрированных хуков
  • Fluent Settings API с вкладками, разделами и полями ввода текста.
  • Модули сайта: безопасность, заголовок, администрирование, cookie, cron, пользователи, загрузка файлов, редактор
  • Интеграция с Contact Form 7 и TranslatePress
  • Документация и выпуск с открытым исходным кодом.