Открыть сервис

WordPress API

WordPress API — это совокупность программных интерфейсов (API, Application Programming Interface), предоставляемых системой управления содержимым (CMS) WordPress для взаимодействия с её данными, функциями и ядром из внешних приложений, скриптов и сервисов. API позволяют разработчикам программно создавать, читать, обновлять и удалять содержимое сайта (посты, страницы, медиафайлы, комментарии, пользователей, таксономии), а также управлять настройками, темами и плагинами без прямого доступа к административной панели. Наиболее известным и широко используемым является REST API, введённый в ядро WordPress начиная с версии 4.4 (декабрь 2015 года).

История

До появления встроенного REST API взаимодействие с WordPress из внешних приложений было затруднено. Существовали сторонние решения, такие как XML-RPC API (протокол, основанный на XML и HTTP, поддерживаемый WordPress с ранних версий) и библиотеки для работы с базой данных напрямую, но они имели ограничения по безопасности, производительности и удобству.

Разработка официального REST API началась в 2013 году как проект Google Summer of Code под руководством Райана МакКьюэна (Ryan McCue). Изначально он существовал как отдельный плагин, который тестировался сообществом. В декабре 2015 года с выходом WordPress 4.4 «Clifford» REST API был включён в ядро в качестве инфраструктурного компонента, но не был полностью функциональным. Полноценная поддержка конечных точек (endpoints) для всех основных типов записей появилась в версии 4.7 (декабрь 2016 года). С этого момента REST API стал стандартным способом создания «безголовых» (headless) приложений на WordPress.

Типы API

WordPress предоставляет несколько различных API, каждый из которых предназначен для решения определённых задач.

REST API (WP REST API)

Это основной современный API для взаимодействия с WordPress. Он основан на архитектурном стиле REST (Representational State Transfer) и использует стандартные HTTP-методы (GET, POST, PUT, PATCH, DELETE) для работы с ресурсами. Данные передаются в формате JSON (JavaScript Object Notation), что делает его удобным для использования в веб-приложениях, мобильных приложениях и одностраничных приложениях (SPA) на JavaScript.

Основные конечные точки REST API:

  • /wp/v2/postsработа с записями (постами).
  • /wp/v2/pages — работа со страницами.
  • /wp/v2/media — работа с медиафайлами (изображения, видео, документы).
  • /wp/v2/users — работа с пользователями.
  • /wp/v2/comments — работа с комментариями.
  • /wp/v2/categories — работа с категориями.
  • /wp/v2/tags — работа с метками.
  • /wp/v2/settings — чтение и изменение основных настроек сайта (доступно только авторизованным пользователям с правами администратора).

REST API поддерживает аутентификацию (например, через куки, OAuth, или Application Passwords, введённые в WordPress 5.6), пагинацию, фильтрацию, сортировку и встраивание связанных данных (embedding).

XML-RPC API

Более старый протокол, основанный на XML. Он был основным способом удалённого управления WordPress до появления REST API. XML-RPC позволяет выполнять такие же операции, как и REST API, но использует другой формат данных и протокол. Он активно использовался для подключения мобильных приложений (например, официальных приложений WordPress для iOS и Android) и сторонних сервисов (например, для публикации записей через IFTTT или Zapier). Начиная с версии 3.5 (2012 год), XML-RPC включён по умолчанию, но его можно отключить. В современных версиях WordPress рекомендуется использовать REST API, так как XML-RPC считается устаревшим, хотя и поддерживается для обратной совместимости.

AJAX API

Предназначен для выполнения асинхронных запросов с клиентской стороны (из JavaScript) к серверу WordPress. Он работает через два основных файла-обработчика: wp-admin/admin-ajax.php (для авторизованных и неавторизованных пользователей) и wp-admin/admin-post.php (только для авторизованных). Разработчики могут создавать свои собственные обработчики (actions) для выполнения произвольного PHP-кода в ответ на AJAX-запросы. Этот API является основой для многих динамических функций в админке и в темах (например, бесконечная прокрутка, лайки, формы без перезагрузки).

Actions and Filters API (Hooks API)

Это фундаментальный механизм расширения функциональности WordPress без изменения его ядра. Он основан на двух типах хуков (hooks):

  • Actions (действия): Позволяют выполнить произвольный PHP-код в определённый момент выполнения WordPress (например, после публикации записи, при загрузке страницы, при активации плагина). Разработчики подключают свои функции к действиям с помощью add_action().
  • Filters (фильтры): Позволяют изменять данные перед их отображением или сохранением (например, изменить текст записи, добавить класс к тегу, изменить заголовок). Разработчики подключают свои функции к фильтрам с помощью add_filter().

Этот API является основой для разработки плагинов и тем.

Options API

Предоставляет простой интерфейс для сохранения и извлечения произвольных данных (опций) в таблице wp_options базы данных. Основные функции: get_option(), update_option(), add_option(), delete_option(). Опции могут быть как простыми строками, так и сложными массивами или объектами (сериализованными). Options API широко используется для хранения настроек плагинов и тем.

Transients API

Предназначен для кэширования данных с истекающим сроком действия. Он работает аналогично Options API, но автоматически удаляет устаревшие данные. Transients API полезен для хранения результатов дорогостоящих запросов (например, к внешним API, сложных SQL-запросов) на определённое время (например, на 1 час). Основные функции: set_transient(), get_transient(), delete_transient().

HTTP API

Предоставляет унифицированный интерфейс для выполнения HTTP-запросов из PHP-кода WordPress. Он абстрагирует различия между разными PHP-расширениями (cURL, fsockopen, streams) и предоставляет простые функции, такие как wp_remote_get(), wp_remote_post(), wp_remote_request(). HTTP API автоматически обрабатывает ошибки, таймауты и поддерживает SSL.

Применение

WordPress API находят применение в самых разных сценариях:

  • Headless CMS: REST API позволяет использовать WordPress только как бэкенд для управления контентом, а фронтенд строить на любом современном JavaScript-фреймворке (React, Vue.js, Angular, Next.js, Nuxt.js). Это даёт больше гибкости в дизайне и производительности, но требует дополнительных усилий по разработке.
  • Мобильные приложения: Официальные и сторонние мобильные приложения для WordPress используют REST API и XML-RPC для публикации и редактирования записей, управления медиафайлами и комментариями.
  • Интеграция с внешними сервисами: API позволяют автоматически публиковать контент из других систем (например, из CRM, систем электронной коммерции, социальных сетей) или, наоборот, забирать данные с WordPress для отображения на других сайтах.
  • Разработка плагинов и тем: Actions and Filters API является основой для любого расширения WordPress. Плагины используют хуки для добавления новых функций, изменения существующих и взаимодействия с ядром.
  • Автоматизация задач: С помощью API можно автоматизировать рутинные операции, такие как массовое обновление записей, создание резервных копий, синхронизация данных.
  • Создание одностраничных приложений (SPA): REST API позволяет создавать полностью динамические интерфейсы, которые загружают данные асинхронно, не перезагружая страницу.

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

При работе с WordPress API необходимо учитывать вопросы безопасности. REST API и XML-RPC API требуют аутентификации для выполнения операций записи или удаления. Неавторизованные запросы обычно ограничены чтением публичных данных. Для защиты от несанкционированного доступа рекомендуется:

  • Использовать надёжные пароли и, по возможности, Application Passwords.
  • Ограничивать доступ к API по IP-адресам (если это возможно).
  • Отключать XML-RPC, если он не используется (он часто является целью атак).
  • Регулярно обновлять WordPress, плагины и темы для исправления уязвимостей.
  • Использовать плагины безопасности, которые могут блокировать подозрительные запросы к API.

Критика

Несмотря на широкое распространение, WordPress API подвергаются критике по нескольким направлениям:

  • Сложность для новичков: REST API требует понимания HTTP, JSON и асинхронного программирования, что может быть сложным для начинающих разработчиков.
  • Производительность: При большом количестве запросов к REST API может возникать задержка, особенно на неоптимизированных серверах. Для решения этой проблемы используется кэширование (например, с помощью плагинов или CDN).
  • Отсутствие некоторых функций: Встроенный REST API не предоставляет всех возможностей, которые есть в административной панели. Например, для работы с некоторыми настройками или сложными запросами могут потребоваться дополнительные плагины или кастомные конечные точки.
  • Устаревший XML-RPC: XML-RPC считается небезопасным и неэффективным, но его поддержка сохраняется для обратной совместимости, что создаёт дополнительную поверхность для атак.

Источники

  • Официальная документация WordPress: «REST API Handbook», «Plugin Handbook», «Theme Handbook».
  • Кодекс WordPress: «XML-RPC WordPress API», «AJAX in Plugins», «Options API», «Transients API».
  • Статья «WordPress REST API: The Complete Guide» на сайте Kinsta.
  • Статья «What is the WordPress REST API?» на сайте WPBeginner.
  • Книга «Professional WordPress: Design and Development» (Brad Williams, David Damstra, Hal Stern).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →