Автопубликация статей на WordPress через REST API под ключ
Настраиваю автоматическую публикацию статей в WordPress — тексты из любого источника (нейросеть, внешний API, Google Docs, сторонняя CMS) попадают на сайт с нужными рубриками, обложкой и SEO-полями без ручной загрузки. Это одна из услуг автоматизации контента; смежное направление — AI-фабрика контента.
Что входит в автопубликацию WordPress
- Подключение через WP REST API — стандартный endpoint
/wp-json/wp/v2/posts, без лишних плагинов-прослоек - Application Passwords — безопасная аутентификация без хранения пароля админа, работает из коробки в WordPress 5.6+
- Полный текст и форматирование — поддержка HTML, блоков Gutenberg, shortcode, классического редактора
- Обложка (featured image) — загрузка через
/wp-json/wp/v2/mediaи привязка к записи через полеfeatured_media - Рубрики и метки — автоматический маппинг таксономий
categoriesиtagsпо идентификатору или слагу, создание новых при необходимости - SEO-поля — поддержка Yoast SEO, Rank Math, All in One SEO (meta_title, meta_description, canonical)
- Черновики и отложенная публикация — статус
draftилиfutureс заданной датой, модерация перед публикацией - Custom Post Types — публикация не только в posts, но и в произвольные типы (services, cases, products)
- Несколько сайтов — веер публикации в сеть WordPress Multisite или на несколько отдельных инсталляций
Как мы публикуем через WP REST API
- Анализ — версия WordPress, активные SEO-плагины, используемые таксономии и ACF-поля, настройки permalinks
- Аутентификация — создание Application Password для служебного пользователя с ролью Editor или кастомной
- Проектирование маппинга — поля источника → поля WordPress, правила создания отсутствующих рубрик
- Разработка коннектора — HTTP-клиент, обработка ошибок 401/403/429, ретраи с экспоненциальным бэк-оффом
- Тестирование — прогон реальных статей на стейдж-инсталляции, проверка обложек и SEO-полей
- Запуск и мониторинг — алёрты на ошибки публикации (Sentry), лог последних попыток, ручная переотправка
Типовые проблемы и как мы их решаем
| Проблема | Решение |
|---|---|
| 401 Unauthorized при REST-запросе | Переход с Basic Auth на Application Passwords или JWT, проверка CORS и правил .htaccess |
403 Forbidden на /wp-json/ | Снимаем блокировку REST в security-плагинах (Wordfence, iThemes), разрешаем служебный IP |
| Битые кириллические слаги | Транслитерация на стороне коннектора, принудительная кодировка UTF-8 в заголовках |
| Не прикрепляется обложка | Сначала POST /media (получаем ID), затем PATCH /posts/{id} с полем featured_media |
| Нет нужной рубрики в WP | Проверка через GET /categories?slug=, при отсутствии — авто-создание |
| Дубли публикаций | Ключ идемпотентности из источника, проверка перед POST через поиск по meta-полю |
| Таймаут на больших статьях | Чанкованная загрузка медиа, увеличенный timeout, retry с экспоненциальной задержкой |
С какими форматами источника работаем
- Markdown — конвертация в HTML-блоки Gutenberg с сохранением подсветки кода
- HTML — прямая передача в поле
contentс санацией опасных тегов - Структурированные поля — отдельно title, lead, body, gallery, SEO-блок, ACF-поля
- Обложка и галерея — массив URL или файлов, автоматическая загрузка в Media Library