WordPress
Что такое WordPress
WordPress — открытая CMS на PHP с базой MySQL или MariaDB. Платформа покрывает блог, корпоративный сайт, медиа, каталог и e-commerce через плагины. Проект развивается сообществом и распространяется под GPL.
WordPress появился в 2003 году как блоговый движок и вырос в универсальную платформу публикации контента. На практике у команды есть готовая админка, редактор блоков, система ролей, библиотека тем и каталог плагинов.
Архитектура WordPress строится вокруг расширяемого ядра. Команда развивает проект через темы, плагины, блоки и хуки, а файлы ядра остаются без локальных правок.
WordPress.com и WordPress.org
| Платформа | Что это | Когда использовать |
|---|---|---|
| WordPress.org | self-hosted WordPress, где вы управляете кодом, хостингом и обновлениями | Нужен полный контроль, кастомная разработка, свои интеграции |
| WordPress.com | управляемый сервис хостинга от Automattic на базе WordPress | Нужен быстрый запуск без администрирования сервера |
WordPress.org даёт максимальную гибкость на уровне плагинов, темы и DevOps. WordPress.com ускоряет старт и снимает часть инфраструктурных задач.
Ключевые официальные ресурсы
- wordpress.org/documentation — пользовательская и эксплуатационная документация.
- developer.wordpress.org — справка для разработчиков, API reference, handbook.
- learn.wordpress.org — структурированные учебные траектории и курсы.
- wordpress.org/plugins — каталог плагинов.
- wordpress.org/themes — каталог тем.
- wordpress.org/hosting — рекомендации по хостингу.
- wordpress.org/showcase — витрина живых сайтов.
- wordpress.org/playground — запуск WordPress в браузере.
- ru.wordpress.org — локализованный портал и новости на русском.
В технических решениях опирайтесь прежде всего на developer.wordpress.org, handbook и code reference. Обзорные данные удобно сверять через documentation и статью в русской Википедии.
Архитектура WordPress
Разбор:
- Диаграмма фиксирует высокоуровневый поток запроса в WordPress.
- Узел
Browserотправляет HTTP-запрос в ядро WordPress. - Ядро (
WP) координирует работу темы, плагинов и базы данных. Themeотвечает за финальный HTML-вывод, который возвращается в браузер.Pluginsрасширяют поведение ядра и встраиваются в жизненный цикл через хуки.DBхранит контент и настройки, из которых собирается страница.
Жизненный цикл запроса
- Запрос приходит в
index.phpи цепочку bootstrap ядра. - Инициализируется окружение, подключаются плагины и тема.
- WordPress строит
WP_Query, определяет тип контента и шаблон. - Срабатывают actions и filters.
- Шаблон рендерит HTML.
- Ответ уходит клиенту, а в фоне могут выполниться cron-задачи.
Структура платформы
| Узел | Назначение | Типичные точки входа |
|---|---|---|
| Ядро | запросы, пользователи, роли, редактор, API | wp-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 Theme | PHP-шаблоны, functions.php, Customizer | легаси-проекты и миграции |
| Block Theme | шаблоны блоков, theme.json, Site Editor | современные проекты и FSE |
| Hybrid Theme | смешанный подход | плавный переход между версиями |
Каталог тем с фильтрами и проверками находится на wordpress.org/themes.
Плагины и экосистема
Каталог wordpress.org/plugins содержит десятки тысяч расширений. В продакшене команда фиксирует политику выбора плагинов:
- Последнее обновление и совместимость с текущим релизом WordPress.
- Количество активных установок и репутация автора.
- Наличие changelog и публичной политики безопасности.
- Нагрузка на сайт и конфликтность с другими плагинами.
Плагины, которые влияют на 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 всегда работает с данными и обязан вернуть значение.
- Фильтр полезен для централизованного форматирования контента без изменения самих записей.
Часто используемые хуки
| Хук | Тип | Назначение |
|---|---|---|
init | action | регистрация CPT, таксономий, rewrite |
wp_enqueue_scripts | action | подключение CSS и JS |
after_setup_theme | action | регистрация меню, support-флаги |
save_post | action | обработка логики при сохранении |
the_content | filter | модификация контента перед выводом |
body_class | filter | добавление 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 важны:
- Совместимая версия PHP и СУБД.
- TLS, изоляция аккаунтов и резервное копирование.
- Кэш на уровне страницы и объектов.
- staging-окружение и безопасный процесс деплоя.
- Наблюдаемость через логи, метрики и health checks.
Безопасность проекта
| Практика | Результат |
|---|---|
| Регулярные обновления ядра, тем и плагинов | закрытие известных CVE |
| Роли с принципом минимальных привилегий | снижение риска захвата админки |
| 2FA и ограничение попыток входа | защита от брутфорса |
| Подпись и проверка источника плагинов | снижение supply-chain рисков |
| Экранирование и санитаризация в коде | защита от XSS и инъекций |
SQL через $wpdb->prepare() | безопасные запросы |
| Резервные копии и тест восстановления | управляемое восстановление после инцидента |
Частые проблемы
| Симптом | Что проверить |
|---|---|
| White Screen of Death | wp-content/debug.log, последняя правка плагина или темы |
| 404 после миграции | пересохранить permalink и проверить rewrite |
| Медленный админ-интерфейс | конфликт плагинов и отсутствие object cache |
| Ошибки после обновления | staging-прогон и проверка совместимости PHP |
WordPress и кастомная разработка
| Критерий | WordPress | Laravel или Symfony |
|---|---|---|
| Основная задача | контент и редакторские процессы | бизнес-логика и сложные доменные сервисы |
| Скорость запуска | высокая с готовой админкой | зависит от объёма кастомной разработки |
| Расширение | темы, плагины, хуки | пакеты, сервис-контейнер, middleware |
| Headless-сценарии | сильная сторона через REST API | сильная сторона через API-first подход |
Обучение и рост команды
- learn.wordpress.org покрывает треки user, developer и theme developer.
- wordpress.org/showcase показывает реальные продакшен-кейсы и архитектурные паттерны.
- developer.wordpress.org служит базой для стандарта кода, API и WP-CLI.
Практический каркас команды
- Публичный интерфейс хранится в теме или block theme.
- Бизнес-логика и интеграции изолируются в отдельных плагинах.
- Репозиторий разделяет локальное, staging и production окружения.
- Обновления проходят через тестовый стенд и regression-checklist.
- Бэкапы и recovery-runbook проверяются регулярно.
Связанные материалы
- Первая тема WordPress
- Экосистема PHP
- Работа с базами данных из PHP
- Первая программа на Laravel
- Веб-сайты и веб-приложения
- Глоссарий — W
Короткий исторический контекст
По данным исторических обзоров сообщества и русской Википедии, WordPress развивался от блогового движка до платформы с блоковым редактором, API-first сценариями и крупной экосистемой open source решений.
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.