Сьогодні розглянемо ще одну корисну можливість — як працювати з мета-даними постів або термінів через API. Як і у випадку з створенням даних через API, у WordPress за замовчуванням немає підтримки взаємодії з мета-полями. Для цього доведеться встановити сторонній плагін. На жаль, мені не вдалося знайти його на GitHub — можливо, його перенесли в інше місце або він був "змігрований" до репозиторію WordPress. Але оскільки плагін у мене збережений у вигляді архіву, у цій статті ми все ж його використаємо (посилання на завантаження плагіна є в тексті). Впевнений, щось подібне можна знайти і в офіційному репозиторії 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 поста, мета-дані якого хочемо отримати. Також обов'язково передати заголовки з даними для авторизації (див. попередні публікації).
У відповіді сервера буде список усіх мета-полів. Водночас повертаються лише «публічні» поля, тобто ті, чиї ключі не починаються з підкреслення “_”.
Як отримати мета-дані категорій у WordPress
Різниця між отриманням даних постів і категорій (тегів чи інших термінів) полягає лише в URL запиту.
Якщо для постів URL виглядає так:
//мій-сайт/wp-json/wp/v2/posts/{post_ID}/meta
То для категорій:
//мій-сайт/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
Щоб додати нові мета-дані в базу даних через API, виконайте наступний код:
$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 мета-поля можна дізнатися, зробивши запит на отримання списку всіх мета-полів поста.
Як видалити мета-дані у WordPress через 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, ] ]);
У відповіді сервер поверне повідомлення про успішне видалення відповідного мета-поля.
На цьому все.
