Перейти к основному содержимому

WordPress

Разработчику Архитектору

Что такое WordPress

WordPress — открытая CMS на PHP с базой MySQL или MariaDB. Платформа покрывает блог, корпоративный сайт, медиа, каталог и e-commerce через плагины. Проект развивается сообществом и распространяется под GPL.

WordPress появился в 2003 году как блоговый движок и вырос в универсальную платформу публикации контента. На практике у команды есть готовая админка, редактор блоков, система ролей, библиотека тем и каталог плагинов.

Архитектура WordPress строится вокруг расширяемого ядра. Команда развивает проект через темы, плагины, блоки и хуки, а файлы ядра остаются без локальных правок.


WordPress.com и WordPress.org

ПлатформаЧто этоКогда использовать
WordPress.orgself-hosted WordPress, где вы управляете кодом, хостингом и обновлениямиНужен полный контроль, кастомная разработка, свои интеграции
WordPress.comуправляемый сервис хостинга от Automattic на базе WordPressНужен быстрый запуск без администрирования сервера

WordPress.org даёт максимальную гибкость на уровне плагинов, темы и DevOps. WordPress.com ускоряет старт и снимает часть инфраструктурных задач.


Ключевые официальные ресурсы

Фокус на проверяемых источниках

В технических решениях опирайтесь прежде всего на developer.wordpress.org, handbook и code reference. Обзорные данные удобно сверять через documentation и статью в русской Википедии.


Архитектура WordPress

Разбор:

  • Диаграмма фиксирует высокоуровневый поток запроса в WordPress.
  • Узел Browser отправляет HTTP-запрос в ядро WordPress.
  • Ядро (WP) координирует работу темы, плагинов и базы данных.
  • Theme отвечает за финальный HTML-вывод, который возвращается в браузер.
  • Plugins расширяют поведение ядра и встраиваются в жизненный цикл через хуки.
  • DB хранит контент и настройки, из которых собирается страница.

Жизненный цикл запроса

  1. Запрос приходит в index.php и цепочку bootstrap ядра.
  2. Инициализируется окружение, подключаются плагины и тема.
  3. WordPress строит WP_Query, определяет тип контента и шаблон.
  4. Срабатывают actions и filters.
  5. Шаблон рендерит HTML.
  6. Ответ уходит клиенту, а в фоне могут выполниться cron-задачи.

Структура платформы

УзелНазначениеТипичные точки входа
Ядрозапросы, пользователи, роли, редактор, APIwp-includes, wp-admin
Темашаблоны и стили публичной частиwp-content/themes/<theme>
Плагиныфункциональные расширенияwp-content/plugins
Базаконтент, метаданные, настройкиwp_posts, wp_postmeta, wp_options, wp_users, wp_usermeta
Медиафайлы сайтаwp-content/uploads

Gutenberg и блоковая модель

Современный WordPress использует block editor (Gutenberg). Контент собирается из блоков, которые хранят структуру и настройки прямо в записи.

Группы блоков

  • Text Blocks — абзац, заголовок, список, цитата.
  • Media Blocks — изображение, галерея, видео, файл.
  • Design Blocks — группа, колонки, кнопки, стек, row.
  • Widget Blocks — архив, календарь, последние записи.
  • Theme Blocks — шаблонные и site editor блоки.
  • Embed Blocks — встроенный внешний контент.

Блоки в разработке

Блоки создаются через @wordpress/create-block и регистрируются в PHP/JS. Главные сущности:

  • block.json — метаданные блока.
  • register_block_type() — регистрация блока на стороне PHP.
  • edit и save — React-компоненты редактора.

Подробнее по API блоков — в разделе Block Editor на developer.wordpress.org.


Темы и шаблоны

Тип темыПодходГде используется
Classic ThemePHP-шаблоны, functions.php, Customizerлегаси-проекты и миграции
Block Themeшаблоны блоков, theme.json, Site Editorсовременные проекты и FSE
Hybrid Themeсмешанный подходплавный переход между версиями

Каталог тем с фильтрами и проверками находится на wordpress.org/themes.


Плагины и экосистема

Каталог wordpress.org/plugins содержит десятки тысяч расширений. В продакшене команда фиксирует политику выбора плагинов:

  1. Последнее обновление и совместимость с текущим релизом WordPress.
  2. Количество активных установок и репутация автора.
  3. Наличие changelog и публичной политики безопасности.
  4. Нагрузка на сайт и конфликтность с другими плагинами.

Плагины, которые влияют на SEO, кэш, безопасность и e-commerce, проходят отдельное тестирование на staging.


Хуки, функции и классы

Actions (действия)

Action запускает побочный код в точке жизненного цикла.

add_action('init', function () {
register_post_type('book', [
'label' => 'Books',
'public' => true,
'show_in_rest' => true,
]);
});

Разбор:

  • add_action('init', ...) регистрирует callback на этапе инициализации WordPress.
  • Хук init запускается рано в жизненном цикле и подходит для регистрации типов контента.
  • register_post_type('book', [...]) создаёт пользовательский тип записи book.
  • 'label' => 'Books' задаёт читаемое имя для интерфейса админки.
  • 'public' => true делает тип доступным на публичной части сайта.
  • 'show_in_rest' => true включает поддержку Gutenberg и REST API для этого типа.
  • Такой код обычно размещают в плагине или в functions.php темы при простом проекте.

Filters (фильтры)

Filter принимает значение, изменяет его и возвращает обратно.

add_filter('the_title', function ($title) {
return '[WP] ' . $title;
});

Разбор:

  • add_filter('the_title', ...) подключает фильтр к формированию заголовка записи перед выводом.
  • Callback получает текущее значение $title, модифицирует его и возвращает обратно.
  • Строка return '[WP] ' . $title; добавляет префикс ко всем заголовкам, где применяется the_title.
  • В отличие от action, filter всегда работает с данными и обязан вернуть значение.
  • Фильтр полезен для централизованного форматирования контента без изменения самих записей.

Часто используемые хуки

ХукТипНазначение
initactionрегистрация CPT, таксономий, rewrite
wp_enqueue_scriptsactionподключение CSS и JS
after_setup_themeactionрегистрация меню, support-флаги
save_postactionобработка логики при сохранении
the_contentfilterмодификация контента перед выводом
body_classfilterдобавление CSS-классов

Базовые функции ядра

ФункцияДля чего
register_post_type()регистрация пользовательского типа записи
register_taxonomy()регистрация пользовательской таксономии
get_posts()выборка записей
wp_insert_post()создание и обновление записи
wp_enqueue_script()подключение JavaScript
wp_nonce_field()защита форм от CSRF
wp_verify_nonce()проверка nonce
esc_html() / esc_url()экранирование вывода
sanitize_text_field()санитаризация входа

Важные классы ядра

КлассРоль
WP_Queryзапросы к контенту
WP_Postмодель записи
WP_Userмодель пользователя и ролей
WP_REST_Requestобъект REST-запроса
WP_REST_Responseобъект REST-ответа
wpdbнизкоуровневый доступ к БД через $wpdb

Полная справка по классам и функциям доступна в Code Reference на developer.wordpress.org/reference.


Типы контента и модель данных

WordPress хранит контент в единой модели post + meta + taxonomy. Ключевые сущности:

  • post и page — базовые типы.
  • attachment — медиа.
  • custom post type — доменные сущности проекта.
  • category, post_tag и кастомные таксономии — классификация.

REST API

Базовый префикс REST API — /wp-json/wp/v2/....

GET /wp-json/wp/v2/posts
GET /wp-json/wp/v2/pages

Разбор:

  • Обе строки демонстрируют endpoint-ы стандартного REST API WordPress.
  • Префикс /wp-json/wp/v2/ указывает на namespace версии API ядра.
  • GET .../posts возвращает коллекцию записей (post) в JSON-формате.
  • GET .../pages возвращает страницы (page) с полями контента и метаданных.
  • Эти запросы применяются в headless-архитектуре, интеграциях и автоматизации импорта/экспорта.

Подходы к аутентификации:

  • Application Passwords для серверных интеграций;
  • Cookie + nonce в админ-контексте;
  • OAuth/JWT через проверенные расширения.

Headless-сценарий связывает WordPress как CMS и отдельный frontend на React или Next.js.


WordPress Playground

WordPress Playground запускает WordPress прямо в браузере без хостинга. Платформа полезна для:

  • обучения и демонстраций;
  • быстрой проверки плагина или темы;
  • воспроизведения бага;
  • сравнения поведения на версиях WordPress и PHP.

Playground поддерживает сценарии в браузере, Node.js и интеграции в developer workflow.


Хостинг и эксплуатация

Рекомендации по выбору провайдера собраны на wordpress.org/hosting. Для production важны:

  1. Совместимая версия PHP и СУБД.
  2. TLS, изоляция аккаунтов и резервное копирование.
  3. Кэш на уровне страницы и объектов.
  4. staging-окружение и безопасный процесс деплоя.
  5. Наблюдаемость через логи, метрики и health checks.

Безопасность проекта

ПрактикаРезультат
Регулярные обновления ядра, тем и плагиновзакрытие известных CVE
Роли с принципом минимальных привилегийснижение риска захвата админки
2FA и ограничение попыток входазащита от брутфорса
Подпись и проверка источника плагиновснижение supply-chain рисков
Экранирование и санитаризация в кодезащита от XSS и инъекций
SQL через $wpdb->prepare()безопасные запросы
Резервные копии и тест восстановленияуправляемое восстановление после инцидента

Частые проблемы

СимптомЧто проверить
White Screen of Deathwp-content/debug.log, последняя правка плагина или темы
404 после миграциипересохранить permalink и проверить rewrite
Медленный админ-интерфейсконфликт плагинов и отсутствие object cache
Ошибки после обновленияstaging-прогон и проверка совместимости PHP

WordPress и кастомная разработка

КритерийWordPressLaravel или Symfony
Основная задачаконтент и редакторские процессыбизнес-логика и сложные доменные сервисы
Скорость запускавысокая с готовой админкойзависит от объёма кастомной разработки
Расширениетемы, плагины, хукипакеты, сервис-контейнер, middleware
Headless-сценариисильная сторона через REST APIсильная сторона через API-first подход

Обучение и рост команды

  • learn.wordpress.org покрывает треки user, developer и theme developer.
  • wordpress.org/showcase показывает реальные продакшен-кейсы и архитектурные паттерны.
  • developer.wordpress.org служит базой для стандарта кода, API и WP-CLI.

Практический каркас команды

  1. Публичный интерфейс хранится в теме или block theme.
  2. Бизнес-логика и интеграции изолируются в отдельных плагинах.
  3. Репозиторий разделяет локальное, staging и production окружения.
  4. Обновления проходят через тестовый стенд и regression-checklist.
  5. Бэкапы и recovery-runbook проверяются регулярно.

Связанные материалы


Короткий исторический контекст

По данным исторических обзоров сообщества и русской Википедии, WordPress развивался от блогового движка до платформы с блоковым редактором, API-first сценариями и крупной экосистемой open source решений.


Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.