| 1 | # WordPress — архитектура и операции (ядро, темы, плагины) |
| 2 | |
| 3 | **Назначение:** опорная карта **WordPress как CMS/платформы** для агентов и разработчиков: жизненный цикл запроса, расширяемость, данные, обновления и базовая безопасность. Мир `software.wordpress`. Не руководство по дизайну тем. |
| 4 | |
| 5 | **Порядок:** `status-php-laravel-v1.md` → `playbook-php-v1.md` (Composer только если Bedrock/roots; иначе авто-загрузчик плагинов) → этот файл. Нативный PHP — `kb-php-*` при низкоуровневых багах. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ### 1. Ядро и жизненный цикл |
| 10 | |
| 11 | - **Fact:** запрос обрабатывается через bootstrap ядра → парсинг URL → query → шаблон (theme); плагины подключаются по порядку загрузки и хуков. |
| 12 | - **Heuristic:** «ничего не срабатывает» — проверить **приоритет хука**, отключение плагинов, fatal в `debug.log`. |
| 13 | - **Confidence:** high |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ### 2. Хуки: actions и filters |
| 18 | |
| 19 | - **Fact:** **do_action** / **add_action** — побочные эффекты; **apply_filters** / **add_filter** — трансформация данных. Имена хуков — контракт между ядром, темой и плагинами. |
| 20 | - **Heuristic:** тяжёлую логику не вешать на `init` с приоритетом по умолчанию без нужды; избегать N запросов к БД из каждого filter callback. |
| 21 | - **First adoption task:** документировать кастомные хуки плагина (имя, когда, аргументы). |
| 22 | |
| 23 | --- |
| 24 | |
| 25 | ### 3. Темы и плагины |
| 26 | |
| 27 | - **Fact:** тема — presentation + `functions.php`; плагины — изолированная функциональность. Child theme — способ безопасно переопределять родительскую тему. |
| 28 | - **Heuristic:** правки ядра и чужих плагинов напрямую в `wp-content` — антипаттерн; использовать hooks, child theme, must-use plugins по политике. |
| 29 | |
| 30 | --- |
| 31 | |
| 32 | ### 4. Данные: wpdb, CPT, таксономии |
| 33 | |
| 34 | - **Fact:** глобальный объект **wpdb** для SQL (экранирование через prepared-подобные методы); Custom Post Types и taxonomies регистрируются на `init`. |
| 35 | - **Heuristic:** сырые запросы без подготовки — SQLi-риск; сравнить с `kb-php-data-persistence-v1.md`. |
| 36 | - **Confidence:** medium |
| 37 | |
| 38 | --- |
| 39 | |
| 40 | ### 5. Пользователи, роли, capabilities |
| 41 | |
| 42 | - **Fact:** модель прав — **roles + capabilities**; проверки через `current_user_can` и т.п. |
| 43 | - **Heuristic:** «админ всё может» в кастомном коде — дыра; явные capability checks на опасных действиях. |
| 44 | |
| 45 | --- |
| 46 | |
| 47 | ### 6. Обновления и окружения |
| 48 | |
| 49 | - **Fact:** обновления ядра/плагинов/тем — через админку или WP-CLI; несовместимости после мажора PHP — типичный класс инцидентов. |
| 50 | - **Heuristic:** staging + бэкап БД/файлов до обновления; для продакшена — отключение редактора файлов в админке. |
| 51 | |
| 52 | --- |
| 53 | |
| 54 | ### 7. Безопасность (baseline) |
| 55 | |
| 56 | - **Fact:** ключи и соли в `wp-config.php`; ограничение login rate; права на файлы; HTTPS для админки. |
| 57 | - **Heuristic:** известные уязвимости в популярных плагинах — держать авто-обновления или мониторинг CVE. |
| 58 | - **Transfer_boundary:** не заменяет пентест; см. OWASP. |
| 59 | |
| 60 | --- |
| 61 | |
| 62 | ### 8. Bedrock / Composer (кратко) |
| 63 | |
| 64 | - **Fact:** **Roots Bedrock** и аналоги переносят конфиг в `.env`, структуру каталогов и Composer для ядра/плагинов — тогда `composer.lock` обязателен в VCS. |
| 65 | - **Heuristic:** смешение «классического» WP и Bedrock в одной голове — путаница путей; уточнять у проекта. |
| 66 | |
| 67 | --- |
| 68 | |
| 69 | ## Registry card (template-knowledge-card-v1) |
| 70 | |
| 71 | ### Provenance |
| 72 | - source_refs: `https://developer.wordpress.org/`; обобщение 2026-03-01 |
| 73 | - created_at: 2026-03-01 |
| 74 | - updated_at: 2026-03-01 |
| 75 | - author: agent-notes KB maintainer |
| 76 | |
| 77 | ### Metadata |
| 78 | - card_id: KC-2026-03-01-WP-OPS |
| 79 | - world: software.wordpress |
| 80 | - layer: world |
| 81 | - tags: wordpress; hooks; plugins; themes; security |
| 82 | - status: active |
| 83 | |
| 84 | ### Epistemic Linkage |
| 85 | - epistemic_basis: fact + inference |
| 86 | - evidence_type: official developer docs |
| 87 | - confidence: medium |
| 88 | - uncertainty: версия ядра и контриб-модуля |
| 89 | - falsification_trigger: крупные архитектурные изменения в будущих мажорах WP |
| 90 | - transfer_boundary: не Laravel/Symfony full stack |
| 91 | |
| 92 | ### Core Unit |
| 93 | - context: плагин, тема, инцидент после обновления |
| 94 | - signal: «какой хук», «почему 500 в админке» |
| 95 | - action: hooks + лог + версии |
| 96 | - outcome: предсказуемые расширения без правок ядра |
| 97 | - lesson: WP — событийная модель; сначала хук, потом код |
| 98 | |
| 99 | ### Operationalization |
| 100 | - first_adoption_task: версия WP + список активных плагинов в README |
| 101 | - validation_check: staging clone + smoke админки |
| 102 | - success_criterion: обновления по чек-листу |
| 103 | - rollback_or_mitigation: бэкап + откат плагина |
| 104 | |
| 105 | ### Lifecycle |
| 106 | - supersedes: — |
| 107 | - superseded_by: — |
| 108 | - deprecation_reason: — |
| 109 | |
| 110 | |