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

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

Сегодня рассмотрим еще один полезный функционал, а именно - как работать с мета данными постов или терминов посредством API. Как в случае с созданием данных по АПИ. В WP, по умолчанию нет поддержки взаимодействия с мета-полями. Для этого нам придется устанавливать сторонний плагин. И к сожалению я не могу найти его на гитхабе, возможно что он был перенесен в другое место, или “мегрировался” как плагин в репозиторий WP. Но т.к. сам плагин у меня сохранился в виде архива, в данной статье мы все же будем использовать его (сам плагин можно скачать по этой ссылке). Уверен что нечто подобное можно найти и в репозитории ВП с хорошими отзывами.

Как получить данные мета полей постов по REST API

Как и в предыдущих статьях данной тематики, наш код будет практически идентичен:

$url = //мой-сайт/wp-json/wp/v2/posts/2694/meta';
$response = wp_remote_get($url, [
	'headers' => $headers,
]);
$records = json_decode(
	wp_remote_retrieve_body($response), 
	true
);
echo"<pre style='dir:ltr;text-align:left'>";print_r($records);echo"</pre>";
die;

Обратите внимание на URL, перед последним слагом “meta”, у нас идет ID поста. Данные метаполей которого, мы хотим получить. Также, обязательно передавать заголовок с данными для авторизации (см. предыдущие посты).

Результатом ответа сервера, будет список всех метаполей. При этом, в ответе мы получим лишь “публичные” поля, т.е. те, ключи которых НЕ начинаются подчеркиванием “_”.

Получаем meta данные полей Категорий в WP

Разница между получения данных постов и категорий (тегов или любых других терминов), практически никакой нет. Разница лишь составляет в URL для запроса. Если для постов URL имел следующий вид - //мой-сайт/wp-json/wp/v2/posts/{post_ID}/meta

То для категорий, URL будет - //мой-сайт/wp-json/wp/v2/categories/{category_ID}/meta

Для тегов - //мой-сайт/wp-json/wp/v2/tags/{tag_ID}/meta

И для любого другого темира таксономии - //мой-сайт/wp-json/wp/v2/{taxonomy_name}/{term_ID}/meta

Пример:

$username = 'admin';
$password = 'qweqwe';
$headers = [
	'Authorization' => 'Basic ' . base64_encode($username . ':' . $password),
];
$response = wp_remote_get('//мой-сайт/wp-json/wp/v2/categories/14/meta', [
	'headers' => $headers,
]);

Как добавить метаданные для поста используя REST API WordPress

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

$url = '//мой-сайт/wp-json/wp/v2/posts/2694/meta';
$response = wp_remote_post($url, [
	'headers' => $headers,
	'body' => [
		'key' => 'blue',
		'value' => 'lightsaber_color',
	]
]);
$records = json_decode(
	wp_remote_retrieve_body($response), 
	true
);
echo"<pre style='dir:ltr;text-align:left'>";print_r($records);echo"</pre>";
die;

Как и во всех предыдущих случаях, нам нужно будет отправить данные для авторизации в заголовке запроса (ключ массива “headers”). А в “body” мы передаем ключ и значение для создаваемого мета поля. Обратите внимание на URL, в нем мы должны указать ID поста для которого создаются данные. Также метод отправки данных, он должен быть POST.

Редактирование данных мета полей WordPress посредством REST API

Чтобы внести изменения в данные полей мета. В URL для запроса, нужно будет передать как ID поста к которому относится данное поле, так и ID самого поля. При этом, мы можем изменить как сам ключ, так и его значение. Что весьма удобно.

$url = '//мой-сайт/wp-json/wp/v2/posts/2694/meta/11723';
$response = wp_remote_post($url, [
	'headers' => $headers,
	'body' => [
		'key' => 'color',
		'value' => 'red',
	]
]);
$records = json_decode(
	wp_remote_retrieve_body($response), 
	true
);
echo"<pre style='dir:ltr;text-align:left'>";print_r($records);echo"</pre>";
die;

А ID мета поля можно узнать, выполнив запрос по API для получения списка всех метаполей поста.

Как можно удалить данные мета полей WP через REST API

Для удаления данных, используется тот же URL что и для редактирования данных. при этом метод запроса должен соответствовать типу “DELETE”:

$url = '//мой-сайт/wp-json/wp/v2/posts/2694/meta/11723';
$response = wp_remote_request($url, [
	'method' => 'DELETE',
	'headers' => $headers,
	'body' => [
		'force' => true,
	]
]);

Результатом ответа будет сообщение - мол, мета поле такое-то удалено.

На этом все.

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

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

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

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