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

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

Кожен плагін WordPress запускається однаково: файл додати_дію виклики, що зростають, доки ніхто не зможе сказати, які з них досі спрацьовують. WP Bootstrapper — це основа, яка замінює цей файл, і він опублікований як відкритий код під ліцензією GPL‑3.0.

Джерело, проблеми та релізи: github.com/kostyasorokin/wp-bootstrapper

Хуки, оголошені там, де вони використовуються

Метод вказує, що він слухає, в атрибуті PHP безпосередньо над ним, разом із пріоритетом та кількістю аргументів. Список реєстрацій зникає, і відповідь на питання “що виконується на ініціалізація”стає радше пошуком, ніж актом пам’яті».

Атрибут є повторюваним, тому один метод може обслуговувати кілька перехоплювачів без подвійного перенесення. Виявлення виконується один раз шляхом рефлексії над деревом вихідного коду та записується у згенерований PHP-файл, який наступні запити зчитують замість повторного рефлексування.

Що насправді відкладається

Варто бути точним, бо легко стверджувати більше, ніж є правдою. Кожен гачок у кеші реєструється для кожного запиту — ця частина не відкладається і не може бути відкладеною, оскільки WordPress повинен знати про існування слухача, перш ніж спрацьовувати.

Відкладається саме об'єкт. Клас створюється під час першого запуску одного з його перехоплювачів, а клас, перехоплювачі якого ніколи не спрацьовують при виконанні певного запиту, взагалі ніколи не створюється. У запиті адміністратора це означає, що класи фронтенду не потребують жодної вартості, окрім замикання, що містить їхню назву.

Налаштування без шаблону

Сторінка адміністратора описується, а не збирається: вкладки, розділи та поля – це об'єкти з типом поля за перерахуванням, а рендеринг, реєстрація та очищення випливають з опису.

Річ не в лаконічності. Екран налаштувань, написаний від руки, накопичує засіб для очищення кожного поля, і той, який забувається, є тим, що має значення — опис поля натомість означає, що його не можна забути.

Що з цим пов'язано

Окрім фундаменту, існує набір модулів, які в будь-якому разі потрібні кожному сайту, кожен з яких написаний на одній і тій самій системі атрибутів: посилення захисту, очищення заголовка документа, обрізання адміністративної панелі, файлів cookie, cron, користувачів, завантажень та редактора.

Інтеграції для Contact Form 7 та TranslatePress знаходяться в окремій папці, тому сайт, на якому не працює ні те, ні інше, не містить жодного з них.

Ролі

Розробник
Konstantin Sorokin

Виконано
  • Архітектура плагінів та розробка на PHP
  • Система перехоплень на основі атрибутів з відображенням та згенерованим кешем
  • Відкладене конструювання об'єктів для зареєстрованих хуків
  • API налаштувань Fluent з вкладками, розділами та введеними полями
  • Модулі сайту: безпека, head, admin, cookies, cron, користувачі, завантаження, редактор
  • Інтеграції з Contact Form 7 та TranslatePress
  • Документація та реліз з відкритим вихідним кодом