Для начал советую ознакомиться с документацией https://developer.wordpress.org/rest-api/
Для отправки запросов использовал Http библиотеку https://github.com/guzzle/guzzle/
не забудьте добавить ее к себе в проект:
composer require guzzlehttp/guzzle
Код создания записи:
<?php /** * @return int */ function createPost() { $imageSrc = '/var/www/default.png';// укажите локальный файл или урл $postData = [ 'title' => 'Заголовок новой записи', 'content' => 'Контентент новой запис созданной по апи', 'status' => 'publish',//future, draft, pending, private 'featured_media' => createMedia($imageSrc), 'categories' => [1, 2], 'meta' => [ 'content_source' => 'WordPress rest api tutorial',// если надо заполнить кастомной поле с именем content_source ] ]; $requestData = [ 'json' => $postData, ]; return sendPostRequest( 'https://thisis-blog.ru/wp-json/wp/v2/posts', $requestData);//замените домен на свой } /** * @param string $src * @return int */ function createMedia(string $src): int { //do not make request if path of media empty if (empty($src)) { throw new RuntimeException('Empty argument'); } $data = [ 'body' => file_get_contents($src), 'headers' => [ 'cache-control' => 'no-cache', 'content-disposition' => 'attachment; filename=' . basename($src), 'content-type' => 'image/png', ] ]; return sendPostRequest('https://thisis-blog.ru/wp-json/wp/v2/media', $data);//замените домен на свой } /** * @param string $url * @param array $data * @return int id of created entity * @throws Exception */ function sendPostRequest(string $url, array $data): int { $data = array_merge($data, ['auth' => ['userLogin', 'userPassword']]);// здесь нужно заменить данные на ваш логи и пароль $client = new \GuzzleHttp\Client(); $res = $client->post($url, $data); if ($res->getStatusCode() !== 201) { // created throw new RuntimeException(var_export($res, true)); } //getting id from response return \GuzzleHttp\json_decode($res->getBody()->getContents())->id; }
Подготовил коллекцию для Postman, скачать
Оставить комментарий