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

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

Продолжаем цикл статей посвященных REST API WordPress. И сегодня, мы научимся читать, создавать, редактировать и удалять данные категорий и терминов (это же касается и прочих кастомных таксономий, но рассмотрим это позже).

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

Как получить список категорий по REST API в WordPress

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

$url = 'http://мой-сайт/wp-json/wp/v2/categories';
$response = wp_remote_get($url, [
	'body' => [
		'include' => [12, 13, 18],
	]
]);
$records = json_decode(
	wp_remote_retrieve_body($response), 
	true
);

echo '<strong>Code:</strong> ' . wp_remote_retrieve_response_code($response);
echo '<br>';
echo '<strong>Message:</strong> ' . wp_remote_retrieve_response_message($response);
echo '<br>';
echo '<strong>Records:</strong> ' . count($records);
echo '<br>';
echo '<strong>Answer:</strong>';
echo "<pre>\$records = ";print_r($records);echo"</pre>";
die;

Разберем код построчно. Где:
wp_remote_get - выполняем CURL запрос с одного сайта на WP к другому WP сайту.
wp_remote_retrieve_body - т.к. в ответе мы получаем не только данные в html/txt/json/raw формате, но и заголовки, и прочую информацию. Нам нужно “изъять” данные с тела ответа.
json_decode - т.к. мы получили данные в JSON формате, декодируем их с помощью стандартной ф-и PHP
$records - содержит массив данных ответа
wp_remote_retrieve_response_code - вернет HTTP код ответа сервера
wp_remote_retrieve_response_message - вернет HTTP сообщение ответа сервера

 

Как создать тег или категорию с помощью REST API в ВордПресс

Не забываем, что для создания, редактирования и удаления данных по API нам нужно будет авторизироваться. И для этого нам нужен будет плагин “JSON Basic Authentication”, установите его.

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

/** Создание Категории */
$url = 'http://мой-сайт/wp-json/wp/v2/categories';
$username = 'admin';
$password = 'qweqwe';
$headers = [
	'Authorization' => 'Basic ' . base64_encode($username . ':' . $password),
];

$response = wp_remote_post($url, [
	'headers' => $headers,
	'body' => [
		'name' => 'Test name category',
		'description' => 'Test description category',
		'slug' => 'test-name-category',
	]
]);
$records = json_decode(wp_remote_retrieve_body($response), true);
echo"<pre>";print_r($records);echo"</pre>";
die;

Где:
$username - логин администратора сайта
$password - пароль администратора сайта
$headers - HTTP заголовок с данными для Basic авторизации
wp_remote_post - ф-я обертка над CURL для отправки POST данных
$records - ответ сервера в JSON формате. При успешном создании категории / тега - созданные данные

Создание тега WordPress по API, аналогично созданию категории:

/** Создание Тегов */
$url = 'http://мой-сайт/wp-json/wp/v2/tags';
$response = wp_remote_post($url, [
	'headers' => $headers,
	'body' => [
		'name' => 'Test name tag',
		'description' => 'Test description tag',
		'slug' => 'test-name-tag',
	]
]);
$records = json_decode(wp_remote_retrieve_body($response), true);
echo"<pre>";print_r($records);echo"</pre>";
die;

Разница лишь состоит в URL на который отправляются данные

Как в WordPress изменить категорию или тег через REST API

Давайте рассмотрим лишь пример с категорией (пример с тегом будет аналогичен, измениться лишь последний слаг URL, т.е. с “categories” на “tags”). Код примера следующий:

$url = 'http://мой-сайт/wp-json/wp/v2/categories/34';
$response = wp_remote_post($url, [
	'headers' => $headers,
	'body' => [
		'name' => 'Test name category (updated: '.date('Y-m-d H:i:s').')',
	]
]);
$records = json_decode(wp_remote_retrieve_body($response), true);
echo"<pre>";print_r($records);echo"</pre>";
die;

Обратите внимание на URL:

$url = 'http://мой-сайт/wp-json/wp/v2/categories/34';

в конце, где 34 - это ID категории данные которой мы хотим обновить.

А обновить мы можем все те же поля что использовали при создании категории (или термина): name, description, slug, parent.

Как удалить в WordPress category или tag посредством REST API

Рассмотрим пример с удалением тегов (категории удаляются аналогично, меняется лишь последний слаг на “categories”). И чтобы удаленно удалить тег, выполните следующий код:

$url = 'http://мой-сайт/wp-json/wp/v2/tags/31';
$response = wp_remote_request($url, [
	'method' => 'DELETE',
	'headers' => $headers,
	'body' => [
		'force' => true,
	]
]);
$records = json_decode(wp_remote_retrieve_body($response), true);
echo"<pre>";print_r($records);echo"</pre>";
die;

Параметр “force” равный true, в массиве “body” обязателен. Он позволяет удалить данные без перемещения в корзину. А т.к. термины не имеют поддержки корзины. Отсутствие этого параметра может вызвать ошибку.

Переменная $records, будет содержать данные только что удаленного поста.

Поделиться в соцсетях:
Статьи на похожую тематику

С вашим WordPress сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.

Оставить комментарий

Ваш адрес email не будет опубликован.