Кожен плагін 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
- Документація та реліз з відкритим вихідним кодом