WordPress rest api

 WordPress REST API

WordPress REST API – грандиозная инициатива, имеющая вид функционального плагина; эта инициатива была разработана специально для ядра WordPress. Однако она может показаться несколько запутанной и сложной простым пользователям. Давайте посмотрим на то, что собой представляет данный проект, почему он так важен, и как принять в нем участие.

 WordPress REST API

WordPress REST API – самый волнующий проект для платформы с тех пор, как появились произвольные типы записей в WordPress 2.9 и 3.0. Я действительно так считаю.

Проект постоянно обновляется, дорабатывается, он пока еще не привязан к определенному релизу ядра, поэтому очень сложно понять, что вообще он собой представляет.

Давай поговорим о том, что собой представляет новый API, почему он так важен, а также ответим на некоторые важные вопросы, связанные с API.

Что такое JSON REST API?


Давайте сначала дадим определение акронимам. Это может показаться утомительным для опытных разработчиков, однако это – хороший способ настроиться на нужный лад.

API: Application Program Interface (интерфейс программирования приложений)

API – это достаточно широкий термин. Любая программа – API. Если у вас имеется некоторый вид конструкции в языке программирования (к примеру, в PHP), и конструкция позволяет выполнять задачи программирования, то в таком случае можно смело говорить об API.

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

Команда разработчиков создала программный интерфейс, чтобы сделать это возможным. Это – самое простое, дилетантское определение API.

JSON: JavaScript Object Notation

JSON – это предпочтительный формат структурирования данных, чтобы эти данные впоследствии могли быть считаны разными приложениями. Вы можете создать форматированные данные с помощью JSON в одном языке программирования и считывать их в другом. JSON напоминает XML, однако выглядит более универсальным по сравнению с ним.


JSON делает возможным взаимодействие между WordPress и мобильными приложениями, поскольку JSON – общий для них формат данных, т.е. вы можете, к примеру, создавать данные на стороне WordPress и передавать их в JSON, чтобы их можно было считать уже на стороне мобильного приложения. Такие отношения можно выстроить не только между WordPress и мобильными приложениями; эти отношения могут быть самыми разными, что делает все более реалистичной фразу «Wordpress – платформа для мобильных приложений».

json-api-data-752x460

JSON выглядит ужасно, если вы взглянете на его «сырые данные». К примеру, сайт Post Status обладает включенным WordPress REST API, поэтому, если вы перейдете по адресу https://poststatus.com/wp-json/posts, вы увидите все последние записи в формате JSON. Для человеческого глаза это не слишком привлекательно, но вот для языка программирования это вполне красиво.

REST: Representational State Transfer

REST API – это архитектурное предпочтение. Большинство REST API, включая WP REST API, основаны на HTTP. Это означает, что основные действия REST API – это HTTP-действия: POST, GET, PUT, DELETE.

Таким образом, с помощью REST API мы можем считывать данные и управлять ими по HTTP.

Wikipedia объясняет RESTful API гораздо лучше, чем я; вот основное определение:

Различные API, которые придерживаются архитектурных ограничений REST, обычно называют RESTful. RESTful API, основанные на HTTP, определяются при помощи следующих аспектов:


  • Базовый URI; к примеру, http://example.com/resources/
  • Internet media type (медиа-тип) для данных. Обычно используется JSON, но могут применяться и другие валидные медиа-типы (к примеру, XML, Atom, микроформаты, изображения и т.д.)
  • Стандартные HTTP-методы (GET, PUT, POST, DELETE)
  • Гипертекстовые ссылки, указывающие на состояние
  • Гипертекстовые ссылки, указывающие на связанные ресурсы

Эти ограничения являются стандартами для работы с RESTful API. В моем случае я использую WP API и Mailchimp API. Взаимодействие с любым из них практически аналогично, поскольку они имеют похожие ограничения.

Что такое WordPress REST API?

Теперь, когда мы знаем, что собой представляет JSON REST API, мы можем лучше определить, что собой представляет WordPress REST API.

WordPress REST API – это общий интерфейс данных и программирования, который позволяет считывать и записывать информацию в WordPress через разные приложения. Теперь разработчикам, которые нацелены на работу с WordPress, не понадобится углубленно разбираться в WP.

Как можно использовать WordPress REST API?

Разработчики смогут выполнять практически все функции управления данными и считывания данных, которые возможны в PHP, воспользовавшись новым API. Что это означает? Это означает многое.

Благодаря JSON API, фронтэнд WordPress можно «отвязать» от WordPress. К примеру, разработчики могут попросту обойти механизм шаблонов WordPress, используя API. Они могут даже хранить бэкэнд WordPress и фронтэнд сайта в разных стеках сервера, поскольку считывать данные можно при помощи API.


Есть уже много сайтов, которые делают это. Некоторые из них используют произвольные API, созданные самостоятельно, в то время как остальные используют новый WordPress REST API. Давайте обсудим несколько примеров:

  • New York Times используют WordPress REST API для самых разных вещей. Они в состоянии использовать API в комбинации со своей собственной CMS. Они могут легко получать данные WordPress для размещения их на главной странице и в других участках сайта. Также они используют REST API для прямых трансляций с разных событий.
  • Bloomberg Politics используют WordPress для публикации материалов, однако если вы посмотрите на фронтэнд, вы никогда об этом не догадаетесь. Я не думаю, что они используют официальный WordPress REST API, однако, в принципе, возможно все.
  • Mashable используют WordPress для публикации материалов, однако их фронтэнд не напоминает WordPress. Они тоже используют произвольную реализацию, на которую они перешли еще до того, как официальный REST API был выпущен.

Эти три сайта используют REST API во фронтэнде. Однако приложения могут выходить далеко за рамки этих примеров.

WordPress как приложение

Если вам интересен реальный пример, вы можете посмотреть презентацию K. Adam White с WordCamp San Francisco 2014, в которой он рассказывает о том, как его команда использовала WordPress в качестве CMS для приложения node.js. Презентация раскрывает тот потенциал применения API, о котором я говорил.


Изучить готовый репозиторий ExpressPress, который Адам отметил в своей презентации – значит получить полезный опыт.

Произвольные админки WordPress

Администрирование WordPress не обязательно должно проходить через админку WordPress. С помощью REST API вы можете создавать, редактировать и удалять контент абсолютно любым способом.

С помощью API можно легко создавать произвольные панели администрирования. Это позволит разработчикам проектировать удобный процесс управления для разных приложений.

json-api-wpcom-post-editor-752x561

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

wp-api-happy-tables-752x490

Другие сервисы, как, к примеру, Happy Tables, также имеют произвольные панели администратора WordPress. В будущем создавать такие админки станет еще проще, поскольку REST API вынесет всю существующую в WordPress функциональность в API, и разработчикам уже не понадобится раз за разом создавать колесо.


Интеграция с приложениями

Также WordPress сможет проще взаимодействовать с разными приложениями. Раньше приложения, взаимодействующие с WordPress, использовали для этого XML-RPC. Благодаря REST API выросла возможность надежного выполнения комплексных функций. Можно будет очень легко создать мобильное приложение, которое сможет не только читать данные WordPress, но и создавать, редактировать, а также удалять эти данные.

Мобильное приложение может быть написано на любом языке, будь то Objective-C, Swift и т.д., и взаимодействовать с WordPress.

Пример такого подхода в действии – AppPresser. AppPresser — это фреймворк разработки приложений, который интегрируется с WordPress REST API для простого создания приложений WordPress.

Однако вы не ограничены только лишь созданием приложений с помощью инструментов, таких как AppPresser. Люди могут иметь одну область хранения данных (WordPress), на основе которой будет функционировать и сайт, и приложение. Кроме того, приложения могут соединяться с базой данной WordPress напрямую через API.

В последующие несколько лет мы увидим десятки разных WordPress-приложений и панелей администрирования. Возможно, мы даже столкнемся с целыми стартапами, основанными на создании WordPress-приложений.

WordPress может предоставить превосходный фундамент для управления пользователями, управления контентом, и многого другого – снижая объем работ, которые необходимо выполнить разным стартапам при создании прототипа мобильного приложения. REST API показывает, что мобильное приложение может выглядеть как угодно; можно использовать такой инструмент, как WordPress, чтобы реализовать многочисленные внутренние связи.

Когда WordPress REST API появится в ядре?


REST API находится в процессе активной разработки.

Если вы хотите следить за разработкой WordPress REST API, вы можете пойти следующими путями.

Знайте, что новая главная версия находится в процессе разработки, поэтому есть определенное несоответствие между 1.1.x и грядущей версией в плане информации, кода и документации. Новая версия – и значительно реструктуризированная – уже примерно 7 месяцев находится в разработке.

Официальная страница плагина WordPress.org[/link] тесно синхронизирована с последним релизом 1.x, хотя и отстает от нескольких коммитов. Плагин создал Райан Маккью, который является руководителем проекта и основным автором плагина.

WP API Github – страница, где идет активное отслеживание ошибок, управление версиями и обработка релизов. API имеет свой собственный аккаунт на Github, а также несколько смежных репозиториев.

Чтобы понять состояние WP REST API, надо мыслить в терминах версий Develop, Master, and Stable.

  • Репозиторий плагина WordPress.org – это Stable версия WP API.
  • Мастер-ветвь Github – это бета-версия следующего релиза
  • Develop-ветвь Github – это все активные разработки

Если вы используете REST API в продакшне, вы должны использовать только версию WordPress.org. Версии Master и Development могут использоваться только для тестирования и разработки.

Улучшения, которые появятся в новой версии

Долгий цикл разработки новой версии REST API объясняется тем, что была запланирована масштабная реконструкция проекта.

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

В этой версии придут многочисленные изменения, среди которых особо следует отметить следующие:

  • Будут добавлены новые функции, которые позволят регистрировать произвольные конечные точки с пространствами имен и версиями. Рейчел Бейкер показал Gist с примерами таких конечных точек. Это означает, что темы и плагины смогут расширять API, увеличивая его мощь.
  • В новой версии будет добавлено создание комментариев и обработка редактирования
  • Команда также работает над поддержкой конечных точек опций, чтобы можно было просматривать, редактировать и создавать общие опции сайта, т.е. полное управление сайтом можно будет проводить при помощи API.

Изменения в текущем цикле разработки заняли много времени и потребовали некоторых серьезных архитектурных изменений, однако они позволят добиться долгосрочных преимуществ.

Участники WordPress REST API

Вообще, в проект REST API на Github внесли свой вклад 49 участников. Однако среди них есть важные люди, которые занимаются активным продвижением проекта.

wp-api-contributors-752x484


  • Райан Маккью. Райан – главный руководитель проекта, он обычно контролирует выход новых версий. Все началось с его проекта на Google Summer of Code. Он работает на Human Made в основном над проектом Happy Tables.
  • Рейчел Бейкер. Рейчел – это руководитель проекта, и он отвечает за основную разработку, а также за обучение и продвижение. Он работает на 10up как старший веб-инженер.
  • Дэниэл Баххубер. Дэниэл участвует в ежедневных обсуждениях, и также делает активные коммиты в проект. Он работает на себя и является временным техническим директором в Fusion.
  • Джо Хойл. Джо участвует в ежедневных обсуждениях, и также делает активные коммиты в проект. Он является соучредителем Human Made.

Помимо них, есть еще около 400 человек, которые посещают канал #core-restapi в Slack. Все они заслуживают продолжительных оваций.

Основы использования WordPress REST API

Новый API подойдет людям, которые знакомы с другими REST API. Однако, если вы плохо знакомы с этими вещами, то в таком случае даже с документацией вы можете запутаться. Я знаю, о чем говорю.

Первое, что надо учесть – планируете ли вы только считывать данные или считывать и записывать. Если вы считываете данные со своего собственного сайта и используете их на том же самом сайте, вам не нужно беспокоиться об аутентификации. Если вы меняете, добавляете или удаляете данные, то в таком случае вы должны пройти аутентификацию на сайте, чтобы вносить изменения.

Давайте рассмотрим несколько простых примеров считывания данных с помощью GET.

URL для получения контента с сайта Post Status будет выглядеть следующим образом:

   
https://poststatus.com/wp-json/posts

Чтобы получить контент с параметрами WP_Query, вам нужно использовать следующее:

https://poststatus.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC

Чтобы получить контент произвольного типа записей, вы должны ввести следующее:

https://poststatus.com/wp-json/posts?type[]=poststatus_org

Чтобы получить контент произвольного типа записей с теми же самыми параметрами WP_Query, вы должны ввести следующее:

https://poststatus.com/wp-json/posts?type[]=poststatus_org&filter[posts_per_page]=2&filter[order]=ASC

Перейдя по этим URL, вы увидите JSON-данные. Попробуйте ввести какой-нибудь из этих URL в браузер, чтобы увидеть возвращенные данные.

Способ получения этих данных напоминает использование WP_Query в стандартном цикле WordPress. Если вы не определите параметры, то в таком случае будут использовать стандартные значения WP_Query.

Эти URL возвращают данные, однако, естественно, вам нужно будет получать эти данные программно. Вы можете сделать это в WordPress-сборке (или вне ее) при помощи двух общих методов: PHP и AJAX.

Обработка данных будет напоминать обработку любых других JSON-данных. Естественно, вы можете запрашивать не только записи, но я просто хотел показать базовую концепцию.

API позволяет вам управлять всем, чем угодно: записями, страницами, произвольными типами записей, пользователями, медиафайлами, таксономиями и даже общими данными сайта.

За информацию спасибо: poststatus.com

info-business.pro

Отключение REST API WordPress без плагина (обновлённый код)

Не секрет, что с версии WordPress 4.7 REST API стал частью ядра и отключение происходит иным образом (с помощью обновлённого хука).

До версии движка WordPress 4.7 REST API отключался данным хуком:

Если у вас активирован DEBUG режим, и вы пользовались данным хуком, то в логе вы можете увидеть следующее: Функция rest_enabled с версии 4.7.0 считается устаревшей! Используйте rest_authentication_errors. REST API более не может быть полностью отключен, вместо этого для ограничения доступа к API может быть использована rest_authentication_errors.

В последней версии WordPress для отключения используется хук:

Данный код необходимо внести в файл functions.php используемой вами темы. Если вы ранее уже редактировали данный файл, то этот процесс не должен вызвать у вас сложностей.

Отключение REST API WordPress с помощью плагина

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

Данный плагин называется Disable REST API и устанавливается стандартным образом – через интерфейс движка WordPress.

Проверка отключения REST API WordPress

Для проверки корректности отключения REST API добавьте к URL вашего сайта wp-json (пример: http://example.ru/wp-json/) – если при открытии данного URL адреса высветилась коротенькая строчка, то это означает, что REST API WordPress успешно отключен.

Если у вас остались вопросы, вы можете задать их в комментариях.

it-actual.ru

Знакомство с WordPress REST API

WP REST API домашняя страница проекта

Проект WordPress REST API (REST от англ. Representational State Transfer – “передача состояния через представления”) подтверждает, что WordPress делает шаги к тому, чтобы стать полноценной платформой приложений. Его наличие – это неоспоримое доказательство, поскольку оно добавляет стандартный REST API к ядру WordPress.

Проект вначале был загружен на GitHub для разработчиков в  2013 разработчиками Ryan McCue и Rachel Baker. Независимый плагин REST API был встроен в ядро WordPress в декабре 2015, после того, как получил огромную поддержку и привлёк около 100 участников, желающих работать над улучшением его возможностей.

С момента, когда WordPress API REST стал частью ядра, он доказал свою эффективность. Вот лишь несколько реальных примеров для наглядности применения и вдохновения в своих проектах:

  1. Event Espresso применяет REST API для обеспечения доступа разработчикам к их международной инфраструктуре, позволяя разрабатывать приложения, с применением их сервисов.
  2. Simmer разрешает разработчикам доступ к API в целью расширения своей функциональности в полноценное мобильное приложение или настраивания тем.
  3. JoinIn предоставляет собственный виджет “встраиваемый” с использованием REST API, заполняя его соответствующими данными везде, где он отображается.

Это лишь верхушка айсберга, когда речь идет об инновационных целях REST API. Однако давайте обсудим, как работает сам REST API.

Как работает WordPress REST API

Если кратко, то REST API работает посредством манипулирования текстовыми данными из одного места в другом без прямого доступа к базе данных или интерфейсу пользователя. Существует много типов API (Application Programming Interfaces), несмотря на это REST остаётся современным и актуальным стандартом.

REST API передаётся через точки доступа Hyper Text Transfer Protocol (HTTP), используя формат JavaScript Object Notation (JSON). Говоря проще, эти технологии обеспечивают доступ к API используя уникальные веб адреса для доставки данных, которые ведут себя как объекты JavaScript.

Если вы никогда не работали с JavaScript или их определением объектов изучите основы JSON. Теперь, когда немного прояснили с понятием REST API, давайте поговорим о том, какое большое влияние он может оказать на процесс разработки с применением WordPress.

Какое значение WordPress REST API имеет для разработчиков

WordPress REST API пособие

WordPress REST API – это универсальный интегратор любой инсталляции WordPress с любым приложением на веб-сервере или вашей операционной системе. В итоге, это означает, что единственным ограничением того, что можно построить с помощью WordPress, является лишь наше воображение. Вы можете создавать любое приложение, написанное на любой платформе или языке и использовать WordPress для обработки данных через REST API. Огромные возможности открываются благодаря открытому и дружественному сообществу WordPress.

REST API базируется на JavaScript, внимание к которому всё возрастает, это намекает нам на то, какие языки программирования важно знать. Скоро вы обнаружите, что JavaScript стороны сервера – это новый PHP. Это уже может быть видно на новом ПО WordPress.com, Calypso, который работает полностью на JavaScript и REST API.

Стандартизируя, способ взаимодействия приложений (включая ядро WordPress) с данными WordPress, разработка под WordPress станет проще и интуитивно понятнее. Более того, это облегчит интеграцию со сторонними платформами.

Надеюсь, теперь у вас появилось больше аргументов в пользу того, зачем важно начать изучать использование этой технологии уже сейчас. Пришло время сделать первые шаги по использованию REST API в вашей собственной работе!

5 Шагов для старта с WordPress REST API

Как мы рассмотрели раньше, REST API может быть использован с любым приложением или любым языком программирования, которым может вызывать HTTP ресурсы. Мы сосредоточимся на использовании командной строки для выполнения запросов REST API, потому что это самый простой метод с минимальной вероятностью допустить ошибки, которые могут отвлекать от процесса обучения.

Для этого нужно открыть программу с интерфейсом командной строки (Command Line Interface CLI) на вашем компьютере – терминал на macOS или Linux и командную строку на Windows. CLI позволяет напрямую взаимодействовать с REST API, без необходимости писать дополнительные скрипты для запроса и обработки информации. Любой запрос, который вы пишете в CLI может быть сценарием на PHP, JavaScript и другом языке, но метод будет отличаться для каждого. В CLI прямое выполнение команд. Просто введите нужную команду и нажмите Enter.

Мы также рекомендуем настроить демонстрационный сайт или тестировать локально, а не пробовать эти шаги на живом сайте. И наконец, ещё все одно условие, чтобы версия WordPress у вашего сайта была 4.4 или выше. Если вы готовы, то давайте начинать!

Шаг 1: Знакомимся с основными понятиями REST API

Прежде чем начнём, давайте ознакомимся с ключевыми понятиями REST API. Всего пять основных понятий и терминов, с которыми следует познакомиться. Давайте их рассмотрим:

  1. Маршруты (‘Routes’) и Ресурсы или точки доступа (‘Endpoints’). Это наиболее важный аспект в понимании REST API. Маршруты помогают вам перемещаться между вашими ресурсами, когда определенный HTTP-метод (например, статический набор данных или действие) подключен к определенному маршруту. Например, /wp-json/ – это маршрут, настроенный как ресурс, созданный для отображения нам доступных маршрутов.
  2. Запросы (Requests). Они создаются путем запуска правильных ресурсов и прохождения данных.
  3. Ответ (Responses). Вкратце, предоставление данных, которые вы запросили или возвращение ошибки, чтобы дать вам знать, что что-то пошло не так.
  4. Схемы (Schemas). Ниже приведены ответы шаблонов, поэтому вы всегда точно знаете, где искать нужные данные.
  5. Классы контроллеров (Controller classes). Они позволяют создавать собственные маршруты и ресурсы. Пока вам не нужно беспокоиться об этом, они станут более полезными в дальнейшем.

Как только вы поймете эти пять концепций, вы можете начать углубляться в сам API REST, начиная с его точек доступа.

Шаг 2: Узнаём наиболее полезные точки доступа REST API

WordPress REST API предлагает reference handbook со всеми точками доступа (ресурсами), где вы сможете найти наиболее полезные для себя. Прежде всего, нужно знать, как построить HTTP-вызов API REST. Базовая часть любого вызова API-интерфейса WordPress выглядит следующим образом, замените yourdomain.com своим:

http://yourdomain.com/wp-json/

Вы можете проверить соединение, выполнив команду curl в своем CLI, используя свой собственный URL-адрес:

curl -X OPTIONS -i http://yourdomain.com/wp-json/

В ответ вас должно поприветствовать сообщение от HTTP. Дальше можно модифицировать эту команду, используя некоторые из главных ресурсов. Теперь мы просто используем версию GET curl.

Чтобы получить JSON список ваших публикаций в WordPress, можно использовать следующее:

curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts

Вслед за этим, попробуйте следующее, чтобы проверить все существующие страницы WordPress:

curl -X GET -i http://yourdomain.com/wp-json/wp/v2/pages

Вы можете поэкспериментировать с каждой из этих точек доступа (и больше!) в  CLI, чтобы рассмотреть какой ответ выдаёт каждый из них.

Шаг 3: Изучаем основы аутентификации REST API

Теперь самое время изучить аутентификацию. Некоторые действия и данные в REST API публичные, в то время как другие требуют, чтобы вы были авторизованы как администратор. Однако, это же REST API и негде входить в систему для авторизации. Вместо этого вы можете выполнить аутентификацию в процессе выполнения запросов, которые требуют админ доступа, таких как просмотр неопубликованных записей или изменение публикаций.

Начнём с установки плагина WordPress REST API Basic Auth. Это простой плагин для разработчиков, который поможет изучить REST API быстро, и не предназначен для реальных сайтов. Однако, процесс установки такой же как и у любого другого плагина.

Как только Basic Auth установлен, вы сможете выполнять аутентификацию через CLI с флагом user. Вот пример того, как применить метод аутентификации пользователя, используя curl для просмотра неопубликованных записей:

curl -X GET --user username:password -i http://yourdomain.com/wp-json/wp/v2/posts?status=draft

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

Шаг 4: Выбираем свою первую публикацию WordPress при помощи REST API

Когда вы поймете, как делать базовые вызовы API REST с помощью curl, попробуйте выбрать конкретную запись. Вначале выведем все публикации, как мы это делали ранее:

curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts

Дальше, найдите ID публикации, которую вы хотите изменить. Добавьте этот ID в конце своего запроса, чтобы выбрать только эту публикацию отдельно:

curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts/<ID>

Вы можете использовать этот примем с добавлением ID для любого ресурса REST API, независимо от того, вы хотите отобразить публикацию, страницу или таксономию.

Шаг 5: Вносим изменения в публикацию в WordPress через REST API

И наконец, давайте попробуем внести изменения в выбранную вами публикацию. Вместо команд OPTION или GET, в этот раз будем использовать POST для внесения изменений. GET используется для чтения данных, в то время как POST – для их отправки.

Давайте переименуем вашу публикацию отправкой запроса POST вместе с данными для аутентификации. Новые изменения будут внесены с использованием флага d в конце команды. Будем передавать пользовательский JavaScript объект устанавливая переменную title на своё значение, такое как My New Title, как показано в коде ниже:

curl -X POST --user username:password http://yourdomain.com/wp-json/wp/v2/posts/<ID> -d '{"title":"My New Title"}'

Убедитесь, что вы заменили имя пользователя, пароль и ID публикации, а также название на свои. Вы можете выбрать ещё раз заданную публикацию для проверки изменений:

curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts/<ID>

Поздравляем! Вы только что сделали свои первые админ правки, используя WordPress REST API. Конечно, это базовое руководство только едва касается возможностей, предоставляемых REST API, но для начала это весьма решительные шаги!

Заключение

WordPress REST API – новая мощная версия ядра WordPress и многие разработчики уже начали применять её возможности. Соответственно, ознакомившись сейчас с тем, как работать с новой возможностью, вы повысите свои программистские навыки и сможете создать приложение используя WordPress как фреймворк.

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

  1. Знакомство с основными понятиями REST API.
  2. Наиболее полезные ресурсы/точки доступа REST API.
  3. Изучение основ аутентификации REST API.
  4. Получение публикации на WordPress, используя REST API.
  5. Изменение публикации WordPress, используя REST API.

Какие у вас возникли вопросы по поводу WordPress REST API? Пишите нам в комментариях!

www.hostinger.ru

Yo, Dawg.

When I read the Merge Proposal back in September, the first thing I thought was “oh cool, they’re merging the REST API.” Essentially, what we’re getting in 4.4 is a great, RESTful, replacement for the Plugin API’s admin_ajax_ hook system that provides a simpler and more robust way of making custom endpoints for plugins and apps.

There’s plenty of information about the REST API and the merge out there, so I won’t go into much more detail here. Instead, in the spirit of this series, I’d like to explore the WordPress 4.4 REST API by sketching out an app.

Give It A REST

What we’ll be creating is a very simple app that I’ll be shamelessly calling “Give it a REST” or GIAR when I’m too lazy to type it all out. If I were submitting GIAR to ProductHunt, I’d describe it as “Tinder meets Pocket for a single blog’s posts”. The app will consist of two parts:

  1. A WordPress plugin that will create the API for our app. The API will provide an endpoint to GET a list of posts, as well as an endpoint to POST upvotes and downvotes.
  2. A javascript app that will show users random blog post titles and allow them to downvote to “Give it a REST” or upvote to “Give it a READ” and add it to their reading list.

To keep things simple we’ll build this out like an MVP, or Minimum Viable Product. We’ll use very basic HTML, CSS and JavaScript/JQuery to write the app, we’ll store your reading list in localStorage, and we won’t require authentication to cast your vote.

Beginning at the Endpoint

Since this will be pretty simple, I’m going to start by scaffolding out the app first so that I can create the API endpoints based on how the app will actually use it.

The first thing the app will need is a list of articles which I’ll just mock up in JSON for now:

var posts_mockup = [   { ID: 1, title: "First Post Title", permalink: 'http://example.com/1/', upvotes: 12, downvotes: 2 },   { ID: 22, title: "Second Post Title", permalink: 'http://example.com/2/', upvotes: 1, downvotes: 22 },   { ID: 33, title: "Third Post Title", permalink: 'http://example.com/3/', upvotes: 5, downvotes: 4 },   { ID: 44, title: "Fourth Post Title", permalink: 'http://example.com/4/', upvotes: 2, downvotes: 2 },   { ID: 55, title: "Fifth Post Title", permalink: 'http://example.com/5/', upvotes: 8, downvotes: 13 },   ];  

This is what our response should eventually look like when we request a list of posts from the API. Next, I’ll create a very simple html page that will be our app. I’ll include jQuery and app.js which will do the dirty work, as well as some basic styling, and all of the elements that our app will need to function on a basic level.

Which looks like this in a browser:

The basic page

Next, I’ve put together a very basic javascript implementation. This isn’t the best code I’ve ever written, but this is an MVP so it gets the job done:

Which has everything basically working which you can play with here:

See the Pen Give it a REST by JRGould (@JRGould) on CodePen.

Since this is a post about the REST API, I won’t go too in depth into what’s going on in the JS (feel free to ask in the comments or to fork my CodePen) but here’s a brief overview:

There’s a $( document ).ready( function() { ... that sets everything up once the document is loaded. Besides setting up click handlers for the voting buttons and the “clear” button for the reading list, the first thing it does is call getPostsFromServer() which just grabs the mocked data for now, but it also takes a callback since we’re going to be adding an AJAX call to get the real data from the server.

The callback we’re passing is initAfterAjax() which is fired once we know that we’ve got the posts from the server. The callback handles hooking data up to the DOM by showing a random post using getRandomPost() as the argument for showPost()and then setting up the reading list by clearing out the ul and looking for our existing reading list in localStorage using the getLS() helper function and using that to populate the reading list with links if it finds any.

If you read through this code, you’ll see two TODO:... comments, this is where we need to hook up the API. I’ll do this by first creating a settings object with the connection information and endpoints, this makes it easy to customize or to change in the future:

var giar_settings = {   api_base: 'http://give-it-a-rest.dev/wp-json/give-it-a-rest/v1/',   endpoints: {   posts: { route: 'list-posts/', method: 'GET' },   vote: { route: 'vote/', method: 'POST' }   }  }  

We’ll explore this more a bit later since it serves as a great outline for the API we’re going to build. Next, I’ll create an ajax helper function to utilize this object:

function doAjax( endpoint, data ) {   return $.ajax( {   url: giar_settings.api_base + endpoint.route,   method: endpoint.method,   data: data   } );  }  

This will allow us to just pass a reference to the endpoint we’d like to use along with the data we’d like to send and it will set up a basic $.ajax call based on just that. This function also returns the jQuery object so we can add callbacks when needed.

Now all that’s needed is to take care of those TODOs. First, we’ll update getPostsFromServer():

function getPostsFromServer( callback ) {   doAjax( giar_settings.endpoints.posts, {} )   .done( function( data ) {   posts = data;   if ( 'function' === typeof callback ) {   callback.call();   }   } );  }  

Next we’ll replace the TODO in voteOnPost() to actually send our vote:

doAjax( giar_settings.endpoints.vote, {   vote: updown,   id: post.ID  } );  

deliciousbrains.com

WordPress Rest API Basics

Once you’ve downloaded and activated the plugin your site is ready to go and your API base path will be /wp-json/. This means that to get all your posts from an external application you can make a request to http://yoursite.com/wp-json/something.

In most cases the “something” in the URL will start with /wp/v2 which indicates that you are using version 2 of the API

The easiest way to try out the new API is to make sure you’re logged in to the website you’ve installed and activated the plugin on and visit a route. Check out http://yoursite.com/wp-json/wp/v2/posts for example.

If you see a response but it’s just a mass of text, I recommend using the JSON Formatter for Chrome or JSONView for Firefox.

HTTP Verbs

REST APIs use HTTP Verbs which determine the type of action a client may want to perform. HEAD, GET, POST, PUT, and DELETE can be used which are standard across the web.

HEAD is used to retrieve HTTP header information, GET retrieves information about a resource, POST creates a resource, PUT updates a resources and DELETE deletes a resource. Resources are discreet entities in WordPress such as posts, comments, users and so on.

Routes And Endpoints

Endpoints are specific functions that can be reached by sending the appropriate HTTP verb to the appropriate URL. The route is the URL itself, the endpoint is the combination of the route and the type of action used.

/wp/v2/posts/342 is a route which has three endpoints. Using GET will retrieve the resource, using PUT (along with parameters) can update the resource and DELETE will delete it.

Using the WordPress Rest API

From here on out you can do almost anything you could on WordPress proper. You can create posts, update users, moderate comments – all this from any other application you want. It’s a matter of knowing the routes, endpoints, the schema and parameter requirements. The main page of the API Documentation has plenty of information for you regarding these.

If you need a list of all available routes you can simply send a GET request to /wp/v2/. This has the added benefit of listing all routes and endpoints available to your site specifically – since you do have the option of adding your own.

Authentication

The first thing you’ll want to tackle is authentication – granted, this is a bit difficult. Once you’ve figured it out, the rest is a breeze though. Right now there are three types available:

  • Cookie Authentication – For plugins/themes running on the same site
  • OAuth – For external clients
  • Basic Authentication – For testing only

I’m going to recommend basic auth for the purposes of learning, but please do not use it in the wild – it isn’t very safe at all.

To get started you’ll need to install the Basic Auth plugin. The plugin is only available via Github, you can install it by downloading the zip and installing the zip file in the plugins section.

To demonstrate how to access a WordPress installations API I am going to write some PHP code on my localhost which will access the metadata of a post on my actual website.

To grab publicly available data you can use the wp_remote_get() function, here’s how:

$response = wp_remote_get( 'http://danielpataki.com/wp-json/wp/v2/posts');

By printing out the $response variable you’ll see a bunch of data, including the list of posts. If you try the same method for a restricted resource you’ll bump into an error which reads: “Sorry, you cannot view the meta for this post”. Here’s where authentication comes in.

Using basic auth we can send our username and password along for each request which will grant us the proper privileges.

$response = wp_remote_get( 'http://username:password@danielpataki.com/wp-json/wp/v2/posts/445/meta');

This call will be successful, I’ll be able to see all the post meta associated with post 445. The drawbacks of this method should be apparent.

You need to send your username and password with each request and – worst of all – as plain text! Just to recap: this is fine for testing and learning about the API but never use this in production.

Sending Data

Getting resources is pretty obvious. You use the GET verb on the proper endpoint and you get back a mass of JSON which you can work with in Javascript directly, or you can use json_decode() in PHP to convert it to an array. How about more complex procedures where we send data, often with parameters. The example below creates a post via the REST API.

$args['body'] = array(  	'title' => 'API TEST',  	'status' => 'draft',  	'content' => 'content'  );  $response = wp_remote_post( 'http://username:password@danielpataki.com/wp-json/wp/v2/posts/', $args );

Knowing what to add to the request body is a matter of glancing at the schema. It contains the parameter names, the data types, the description and context.

The response contains a bunch of information about our new post, including the ID, which could come in handy if we want to manipulate the postmeta once we’ve added the post itself.

Overview

I hope this quick primer has shown how easy it is to work with the JSON API. It’s final inception into the core (hopefully soon) will take existing apps to the next level and will allow developers to create mobile clients for complex websites running WordPress.

In an upcoming article, we’ll look at the JSON API in more detail, including more complex forms of authentication and custom endpoints, stay tuned!

kinsta.com

What is the WordPress REST API?

The REST API is not a new concept. In fact, Roy Fielding defined the term “representational state transfer” in the year 2000 when he used it to design HTTP 1.1 and Uniform Resource Identifiers, better known as “URIs.”

You probably already know that APIs are the structure of software applications that contain sets of tools and protocols developers can use to build those applications. REST API is similar to that except it performs its requests and receive its responses through HTTP protocol.

Regular APIs typically use PHP, Python and Ruby to build applications. You can use other languages, but these are the most popular. REST APIs, through the use of HTTP protocol, make it easier to utilize other programming languages, such as JavaScript.

WordPress REST API

I’ve already explained how WordPress REST API is more about moving WordPress closer to where the rest of the web is and less about moving away from PHP. It’s about making it easier for developers to use languages like JSON and JavaScript so WordPress can become a fully-fledged platform capable of being used to build much more than traditional websites and blogs.

Here’s WordPress’ explanation of incorporating JSON in the WordPress REST API:

The WordPress REST API provides API endpoints for WordPress data types that allow developers to interact with sites remotely by sending and receiving JSON (JavaScript Object Notation) objects. JSON is an open standard data format that is lightweight and human-readable, and looks like Objects do in JavaScript; hence the name. When you send content to or make a request to the API, the response will be returned in JSON. This enables developers to create, read and update WordPress content from client-side JavaScript or from external applications, even those written in languages beyond PHP.

It’s essentially designed to bridge the gap between the PHP WordPress core is built on and the JavaScript many web applications use today. The infrastructure for the WordPress REST API was added to WordPress core in version 4.4 (codename “Clifford”) in December 2015. You needed a plugin to use the REST API at that time. However, the rest of this API, the content endpoints to be exact, was added to WordPress core in version 4.7 (codename “Vaughan”) in December 2016, negating the need for the WP REST API plugin.

How the WordPress REST API works

In order to understand how the WordPress REST API works, you need to understand how HTTP requests and responses work. When you enter a URL in the address bar of a browser, that’s a request. When the server displays the website or application for that URL, that’s a response.

You’ll see a few different types of requests or “HTTP methods” when you start using the WordPress REST API. Here are the four main types of HTTP methods the web uses:

  • GET – Used to retrieve data from the server
  • POST – Used to send data to the server
  • PUT – Used to change or update data on the server
  • DELETE – Used to remove data from the server

With those simple definitions in mind, entering a URL in a browser is a GET request. Entering your login information for a website is a POST request. Changing your current password to a new one is a PUT request while terminating your account is a DELETE request.

Additional terms you’ll notice are “routes” and “endpoints.” A route is typically the URL or a part of the URL you’re trying to access while an endpoint is typically the response you receive from the server.

When external sources send HTTP requests to the server hosting your WordPress site, the REST API exposes your data in a secure manner by responding to those requests with a common architecture and its own set of protocols.

This allows WordPress content, such as posts, pages, and comments, to be processed as raw data. We’ll get a glimpse of this in a minute. The overall point of this is to allow you to make changes to your site’s content without having to access the WordPress admin area. This is how you can make changes to your site using JSON whose responses give developers a number of different ways to interact with their sites.

Let’s get our hands a little dirty to see how this all works.

Using WordPress REST API

We’re going to get into how to actually use the WordPress REST API, but unfortunately, there are a few key concepts we need to go over first so it all makes sense. Here are the key concepts that make up this API:

  • Routes & Endpoints
  • Requests
  • Responses
  • Schema
  • Controller Classes

Let’s get to it.

Routes & Endpoints

The technical definition of a route is a URL that can be mapped through different HTTP methods. The mapping between a route and an HTTP method is called an “endpoint.” You can access the WordPress REST API and see which routes and endpoints are available for your site by adding the route “/wp-json/” to the end of your URL.

You can see this at WordPress.org by visiting https://www.wordpress.org/wp-json/:

Install an extension called JSON Viewer for Chrome (JSON viewer for Firefox available here) to clean this mess up:

If you don’t use pretty permalinks, use “?rest_route=” instead of “wp-json”. Either way, what you’re seeing here is an example of a route and an endpoint. “/wp-json/” and “/?rest_route=/” are routes. They allow you to access the WordPress REST API through the GET HTTP method. The WordPress REST API displayed to you, or the data if you will, is an endpoint served to us via a JSON response.

Requests

The WordPress REST API processes requests with a class named WP_REST_Request. It’s a primary class in the WordPress REST API infrastructure. It’s used to store and retrieve information for all of the requests you make.

You can send requests remotely using the HTTP methods we went over or you can make them internally as you normally would via PHP.

Responses

Responses are processed with the WP_REST_Response class. A response is the data you receive from a request, as stated before. The API uses this class to return data sent from endpoints. It can also return errors.

Schema

Schema is a concept inside of the WordPress REST API that serves a variety of purposes. API schema defines the data structures endpoints can use, and it contains a list of the properties the WordPress REST API can return. It also contains the parameters the API can accept and provides security for it by validating the requests the API receives.

Controller Classes

The WordPress REST API registers routes and endpoints, handles requests, utilizes Schema to define the data and properties it can use, and generates API responses on top of all of that. The API, and you as the developer, needs a way to manage all of these moving parts. That’s what controller classes are for. They allow you to gather all of these elements and organize them in a single place.

Using the WordPress REST API to access your content through endpoints

A route is the URL you use to access an endpoint, and an endpoint is the response you receive from the server. If you want to get your site’s posts through the WordPress REST API, use the route “/wp/v2/posts/”. WordPress explains that “/wp-json/” isn’t included in these longer routes because it’s the “base path for the API itself.” The ending URL is “example.com/wp-json/wp/v2/posts”.

If you want to access a specific post through the API, simply add the post’s ID to the end of the URL so it looks like this: “example.com/wp-json/wp/v2/posts/123”

If you want to search for posts that use a specific phrase or keyword, use this route: “/wp/v2/posts?=search[ insert keyword here]” so the URL looks like this: “example.com/wp-json/wp/v2/posts?search[insert keyword here].

If you want to access a specific user’s profile through the API, add “/users/” to the route as well as that user’s user ID. The URL looks like this: “example.com/wp-json/wp/v2/users/2”. Similarly, if you want to access a site’s users, drop the ID so the URL looks like this: “example.com/wp-json/wp/v2/users/”.

You can view more endpoints here.

Extending the REST API

We’re going to skip a few steps and learn how to use the properties of the REST API to extend it. You should learn about things like global parameters, pagination, linking and embedding, and authentication before doing this, but we’re going to skip ahead for the purposes of this quickstart guide.

Here are a few things you can accomplish by extending the REST API:

  • Add Custom Endpoints
  • Create Routes for Custom Post Types and Custom Taxonomies
  • Modify Responses

If you’re an experienced developer, you’re likely already familiar with the concepts required to add a custom endpoint to the REST API. It’s just a matter of learning how to connect the two.

You’ll start off by creating a function that can be simple or complicated depending on the sophistication of the functionality you’re trying to add to the REST API. Here’s the simple function WordPress provides in their handbook, a function designed to grab the titles of your site’s latest posts by author:

<?php /** * Grab latest post title by an author! * * @param array $data Options for the function. * @return string|null Post title for the latest,
 * or null if none. */ function my_awesome_func( $data ) { $posts = get_posts( array( 'author' => $data['id'], ) );  if ( empty( $posts ) ) { return null; }  return $posts[0]->post_title; }  

After that, you’ll need to register a route to make this function available to the API by using another function called register_rest_route. Here’s the function WordPress uses to register the route for the previous function:

<?php add_action( 'rest_api_init', function () { register_rest_route( 'myplugin/v1', '/author/(?P<id>d+)', array( 'methods' => 'GET', 'callback' => 'my_awesome_func', ) ); } );

There are a couple of things happening here. First, there are three properties passing through this function. They are the namespace (“myplugin/v1”), the route we need to register (“my_awesome_func”) and the options we want to use (“author/(?P<id>d+)”). The register_rest_route function is also being called on a callback function called “rest_api_init”. This cuts back on the amount of unnecessary work that’s performed when the API isn’t being used.

As WordPress explains, this route is designed to match anything with “/author/{id}” where “{id}” is an integer. This is the URL you would visit to use this route – http://example.com/wp-json/myplugin/v1/author/(?Pd+). This specific route uses one endpoint, but routes are capable of having multiple endpoints. You can see we also defined the HTTP method this endpoint would use.

Other concepts you’ll need

There are a few additional concepts you’ll need to learn if you want to extend the REST API, provided you’re not already familiar with them. We used a namespace in the function above, which is why the first part of the URL above is “myplugin/v1”. They’re used as prefixes to prevent clashes with custom routes.

Arguments are another concept you should be familiar with as they allow you to run sanitization and validation by registering them when you register routes. You should also familiarize yourself with return values as this is what you’ll use to define the type of response you receive from the server. You can even use them to return errors, such as a 404 error that’s displayed if an author hasn’t published any posts.

Callbacks are another concept you should know, such as functions known as permissions callbacks that check whether or not a user is able to perform an action before the function attempts to call the actual callback. Finally, familiarizing yourself with internal classes and controller patterns will help you manage every aspect of the endpoints you create.

Final thoughts & where to go from here

Understanding the key concepts of the WordPress REST API and learning how to use and extend it can be overwhelming, but the makers of WordPress are fairly confident it’ll be the force the CMS in ways it needs to grow far beyond its capabilities as a platform to build simple websites and blogs.

Learning JavaScript should be a top priority right now, as stated before, as this is the language the makers of WordPress want developers to incorporate more often in WordPress projects.

You should also go through the WordPress REST API handbook to gain a better understanding of WordPress’ take on the REST API. The Using the REST API section contains guides on how to use global parameters, pagination, embedding and linking, and authentication, which are all key concepts of this API.

Once you’ve gained a pretty good understanding of all of that, you can go through the Extending the REST API section to learn how to extend the API in depth. You’ll learn more about adding custom endpoints and will also learn how to use custom content types and modify responses.

www.wpsuperstars.net

WordPress REST API – грандиозная инициатива, имеющая вид функционального плагина; эта инициатива была разработана специально для ядра WordPress. Однако она может показаться несколько запутанной и сложной простым пользователям. Давайте посмотрим на то, что собой представляет данный проект, почему он так важен, и как принять в нем участие.

wprest

WordPress REST API – самый волнующий проект для платформы с тех пор, как появились произвольные типы записей в WordPress 2.9 и 3.0. Я действительно так считаю.

Проект постоянно обновляется, дорабатывается, он пока еще не привязан к определенному релизу ядра, поэтому очень сложно понять, что вообще он собой представляет.

Давай поговорим о том, что собой представляет новый API, почему он так важен, а также ответим на некоторые важные вопросы, связанные с API.

Что такое JSON REST API?

Давайте сначала дадим определение акронимам. Это может показаться утомительным для опытных разработчиков, однако это – хороший способ настроиться на нужный лад.

API: Application Program Interface (интерфейс программирования приложений)

API – это достаточно широкий термин. Любая программа – API. Если у вас имеется некоторый вид конструкции в языке программирования (к примеру, в PHP), и конструкция позволяет выполнять задачи программирования, то в таком случае можно смело говорить об API.

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

Команда разработчиков создала программный интерфейс, чтобы сделать это возможным. Это – самое простое, дилетантское определение API.

JSON: JavaScript Object Notation

JSON – это предпочтительный формат структурирования данных, чтобы эти данные впоследствии могли быть считаны разными приложениями. Вы можете создать форматированные данные с помощью JSON в одном языке программирования и считывать их в другом. JSON напоминает XML, однако выглядит более универсальным по сравнению с ним.

JSON делает возможным взаимодействие между WordPress и мобильными приложениями, поскольку JSON – общий для них формат данных, т.е. вы можете, к примеру, создавать данные на стороне WordPress и передавать их в JSON, чтобы их можно было считать уже на стороне мобильного приложения. Такие отношения можно выстроить не только между WordPress и мобильными приложениями; эти отношения могут быть самыми разными, что делает все более реалистичной фразу «Wordpress – платформа для мобильных приложений».

json-api-data-752x460

JSON выглядит ужасно, если вы взглянете на его «сырые данные». К примеру, сайт Post Status обладает включенным WordPress REST API, поэтому, если вы перейдете по адресу https://poststatus.com/wp-json/posts, вы увидите все последние записи в формате JSON. Для человеческого глаза это не слишком привлекательно, но вот для языка программирования это вполне красиво.

REST: Representational State Transfer

REST API – это архитектурное предпочтение. Большинство REST API, включая WP REST API, основаны на HTTP. Это означает, что основные действия REST API – это HTTP-действия: POST, GET, PUT, DELETE.

Таким образом, с помощью REST API мы можем считывать данные и управлять ими по HTTP.

Wikipedia объясняет RESTful API гораздо лучше, чем я; вот основное определение:

Различные API, которые придерживаются архитектурных ограничений REST, обычно называют RESTful. RESTful API, основанные на HTTP, определяются при помощи следующих аспектов:

  • Базовый URI; к примеру, http://example.com/resources/
  • Internet media type (медиа-тип) для данных. Обычно используется JSON, но могут применяться и другие валидные медиа-типы (к примеру, XML, Atom, микроформаты, изображения и т.д.)
  • Стандартные HTTP-методы (GET, PUT, POST, DELETE)
  • Гипертекстовые ссылки, указывающие на состояние
  • Гипертекстовые ссылки, указывающие на связанные ресурсы

Эти ограничения являются стандартами для работы с RESTful API. В моем случае я использую WP API и Mailchimp API. Взаимодействие с любым из них практически аналогично, поскольку они имеют похожие ограничения.

Что такое WordPress REST API?

Теперь, когда мы знаем, что собой представляет JSON REST API, мы можем лучше определить, что собой представляет WordPress REST API.

WordPress REST API – это общий интерфейс данных и программирования, который позволяет считывать и записывать информацию в WordPress через разные приложения. Теперь разработчикам, которые нацелены на работу с WordPress, не понадобится углубленно разбираться в WP.

Как можно использовать WordPress REST API?

Разработчики смогут выполнять практически все функции управления данными и считывания данных, которые возможны в PHP, воспользовавшись новым API. Что это означает? Это означает многое.

Благодаря JSON API, фронтэнд WordPress можно «отвязать» от WordPress. К примеру, разработчики могут попросту обойти механизм шаблонов WordPress, используя API. Они могут даже хранить бэкэнд WordPress и фронтэнд сайта в разных стеках сервера, поскольку считывать данные можно при помощи API.

Есть уже много сайтов, которые делают это. Некоторые из них используют произвольные API, созданные самостоятельно, в то время как остальные используют новый WordPress REST API. Давайте обсудим несколько примеров:

  • New York Times используют WordPress REST API для самых разных вещей. Они в состоянии использовать API в комбинации со своей собственной CMS. Они могут легко получать данные WordPress для размещения их на главной странице и в других участках сайта. Также они используют REST API для прямых трансляций с разных событий.
  • Bloomberg Politics используют WordPress для публикации материалов, однако если вы посмотрите на фронтэнд, вы никогда об этом не догадаетесь. Я не думаю, что они используют официальный WordPress REST API, однако, в принципе, возможно все.
  • Mashable используют WordPress для публикации материалов, однако их фронтэнд не напоминает WordPress. Они тоже используют произвольную реализацию, на которую они перешли еще до того, как официальный REST API был выпущен.

Эти три сайта используют REST API во фронтэнде. Однако приложения могут выходить далеко за рамки этих примеров.

WordPress как приложение

Если вам интересен реальный пример, вы можете посмотреть презентацию K. Adam White с WordCamp San Francisco 2014, в которой он рассказывает о том, как его команда использовала WordPress в качестве CMS для приложения node.js. Презентация раскрывает тот потенциал применения API, о котором я говорил.

Изучить готовый репозиторий ExpressPress, который Адам отметил в своей презентации – значит получить полезный опыт.

Произвольные админки WordPress

Администрирование WordPress не обязательно должно проходить через админку WordPress. С помощью REST API вы можете создавать, редактировать и удалять контент абсолютно любым способом.

С помощью API можно легко создавать произвольные панели администрирования. Это позволит разработчикам проектировать удобный процесс управления для разных приложений.

json-api-wpcom-post-editor-752x561

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

wp-api-happy-tables-752x490

Другие сервисы, как, к примеру, Happy Tables, также имеют произвольные панели администратора WordPress. В будущем создавать такие админки станет еще проще, поскольку REST API вынесет всю существующую в WordPress функциональность в API, и разработчикам уже не понадобится раз за разом создавать колесо.

Интеграция с приложениями

Также WordPress сможет проще взаимодействовать с разными приложениями. Раньше приложения, взаимодействующие с WordPress, использовали для этого XML-RPC. Благодаря REST API выросла возможность надежного выполнения комплексных функций. Можно будет очень легко создать мобильное приложение, которое сможет не только читать данные WordPress, но и создавать, редактировать, а также удалять эти данные.

Мобильное приложение может быть написано на любом языке, будь то Objective-C, Swift и т.д., и взаимодействовать с WordPress.

Пример такого подхода в действии – AppPresser. AppPresser — это фреймворк разработки приложений, который интегрируется с WordPress REST API для простого создания приложений WordPress.

Однако вы не ограничены только лишь созданием приложений с помощью инструментов, таких как AppPresser. Люди могут иметь одну область хранения данных (WordPress), на основе которой будет функционировать и сайт, и приложение. Кроме того, приложения могут соединяться с базой данной WordPress напрямую через API.

В последующие несколько лет мы увидим десятки разных WordPress-приложений и панелей администрирования. Возможно, мы даже столкнемся с целыми стартапами, основанными на создании WordPress-приложений.

WordPress может предоставить превосходный фундамент для управления пользователями, управления контентом, и многого другого – снижая объем работ, которые необходимо выполнить разным стартапам при создании прототипа мобильного приложения. REST API показывает, что мобильное приложение может выглядеть как угодно; можно использовать такой инструмент, как WordPress, чтобы реализовать многочисленные внутренние связи.

Когда WordPress REST API появится в ядре?

REST API находится в процессе активной разработки.

REST API не был намечен на определенный релиз, хотя он официально поддерживает модель «возможностей как плагинов». Скорее всего, REST API войдет в ядро WordPress в 2015 году, где-то между WordPress 4.3 и WordPress 4.5. Думаю, что скорее в 4.5, поскольку перед добавлением надо будет провести его всестороннее тестирование.

Следите за разработкой

Если вы хотите следить за разработкой WordPress REST API, вы можете пойти следующими путями.

Знайте, что новая главная версия находится в процессе разработки, поэтому есть определенное несоответствие между 1.1.x и грядущей версией в плане информации, кода и документации. Новая версия – и значительно реструктуризированная – уже примерно 7 месяцев находится в разработке.

Официальная страница плагина WordPress.org тесно синхронизирована с последним релизом 1.x, хотя и отстает от нескольких коммитов. Плагин создал Райан Маккью, который является руководителем проекта и основным автором плагина.

WP API Github – страница, где идет активное отслеживание ошибок, управление версиями и обработка релизов. API имеет свой собственный аккаунт на Github, а также несколько смежных репозиториев.

Чтобы понять состояние WP REST API, надо мыслить в терминах версий Develop, Master, and Stable.

  • Репозиторий плагина WordPress.org – это Stable версия WP API.
  • Мастер-ветвь Github – это бета-версия следующего релиза
  • Develop-ветвь Github – это все активные разработки

Если вы используете REST API в продакшне, вы должны использовать только версию WordPress.org. Версии Master и Development могут использоваться только для тестирования и разработки.

Улучшения, которые появятся в новой версии

Долгий цикл разработки новой версии REST API объясняется тем, что была запланирована масштабная реконструкция проекта.

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

В этой версии придут многочисленные изменения, среди которых особо следует отметить следующие:

  • Будут добавлены новые функции, которые позволят регистрировать произвольные конечные точки с пространствами имен и версиями. Рейчел Бейкер показал Gist с примерами таких конечных точек. Это означает, что темы и плагины смогут расширять API, увеличивая его мощь.
  • В новой версии будет добавлено создание комментариев и обработка редактирования
  • Команда также работает над поддержкой конечных точек опций, чтобы можно было просматривать, редактировать и создавать общие опции сайта, т.е. полное управление сайтом можно будет проводить при помощи API.

Изменения в текущем цикле разработки заняли много времени и потребовали некоторых серьезных архитектурных изменений, однако они позволят добиться долгосрочных преимуществ.

Участники WordPress REST API

Вообще, в проект REST API на Github внесли свой вклад 49 участников. Однако среди них есть важные люди, которые занимаются активным продвижением проекта.

wp-api-contributors-752x484

  • Райан Маккью. Райан – главный руководитель проекта, он обычно контролирует выход новых версий. Все началось с его проекта на Google Summer of Code. Он работает на Human Made в основном над проектом Happy Tables.
  • Рейчел Бейкер. Рейчел – это руководитель проекта, и он отвечает за основную разработку, а также за обучение и продвижение. Он работает на 10up как старший веб-инженер.
  • Дэниэл Баххубер. Дэниэл участвует в ежедневных обсуждениях, и также делает активные коммиты в проект. Он работает на себя и является временным техническим директором в Fusion.
  • Джо Хойл. Джо участвует в ежедневных обсуждениях, и также делает активные коммиты в проект. Он является соучредителем Human Made.

Помимо них, есть еще около 400 человек, которые посещают канал #core-restapi в Slack. Все они заслуживают продолжительных оваций.

Основы использования WordPress REST API

Новый API подойдет людям, которые знакомы с другими REST API. Однако, если вы плохо знакомы с этими вещами, то в таком случае даже с документацией вы можете запутаться. Я знаю, о чем говорю.

Первое, что надо учесть – планируете ли вы только считывать данные или считывать и записывать. Если вы считываете данные со своего собственного сайта и используете их на том же самом сайте, вам не нужно беспокоиться об аутентификации. Если вы меняете, добавляете или удаляете данные, то в таком случае вы должны пройти аутентификацию на сайте, чтобы вносить изменения.

Давайте рассмотрим несколько простых примеров считывания данных с помощью GET.

URL для получения контента с сайта Post Status будет выглядеть следующим образом:

https://poststatus.com/wp-json/posts

Чтобы получить контент с параметрами WP_Query, вам нужно использовать следующее:

https://poststatus.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC

Чтобы получить контент произвольного типа записей, вы должны ввести следующее:

https://poststatus.com/wp-json/posts?type[]=poststatus_org

Чтобы получить контент произвольного типа записей с теми же самыми параметрами WP_Query, вы должны ввести следующее:

https://poststatus.com/wp-json/posts?type[]=poststatus_org&filter[posts_per_page]=2&filter[order]=ASC

Перейдя по этим URL, вы увидите JSON-данные. Попробуйте ввести какой-нибудь из этих URL в браузер, чтобы увидеть возвращенные данные.

Способ получения этих данных напоминает использование WP_Query в стандартном цикле WordPress. Если вы не определите параметры, то в таком случае будут использовать стандартные значения WP_Query.

Эти URL возвращают данные, однако, естественно, вам нужно будет получать эти данные программно. Вы можете сделать это в WordPress-сборке (или вне ее) при помощи двух общих методов: PHP и AJAX.

Обработка данных будет напоминать обработку любых других JSON-данных. Естественно, вы можете запрашивать не только записи, но я просто хотел показать базовую концепцию.

API позволяет вам управлять всем, чем угодно: записями, страницами, произвольными типами записей, пользователями, медиафайлами, таксономиями и даже общими данными сайта.

Источник: poststatus.com

oddstyle.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector