Поддержка → Проблемы и решения → не публикует контент с помощью rest api
не публикует контент с помощью rest api
-
создаю приложение для публикации контента по rest api.
возникла следующая проблема:
при попытке создать пост или комментарий если в тексте есть перенос строки, выдаётся ошибка 400
если текст в одну строку, всё отрабатывается корректноЕсть идеи?
-
Неужели никто не может помочь?
вы никакого кода не указали.
а без кода гадать, что вы сделали не так никто не будет.Тело запроса стандартные. Если контент идёт одной строкой, Публикация происходит. Если есть Перенос строки, Происходит ошибка 400.
Тело запроса:
{
«title»: «{-Variable.title-}»,
«content»: «{-Variable.post-}»,
«tags» : «{-Variable.tags-}»,
«status» : «draft»,
«excerpt» : «{-Variable.excerpt-}…»,
«featured_media» : «{-Variable.image_id-}»
}
Useragent:
Content-Type: application/x-www-form-urlencoded
Authorization:Basic XXXXXXXXXXXXXXXXXXX- Ответ изменён 4 года, 8 месяцев назад пользователем Yuri. Причина: потёр логин-пароль
в JSON переносы трансформируются аля:
{"test":"line break"}
а надо:
{"test":"line\nbreak"}
Authorization:Basic
@killer911 не стоит светить в публичных местах логины-пароли.
без обработки текста:
{«code»:»rest_invalid_json»,»message»:»\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 JSON.»,»data»:{«status»:400,»json_error_code»:3,»json_error_message»:»Control character error, possibly incorrectly encoded»}}
текст преобразован в енкодед:
{«code»:»rest_invalid_json»,»message»:»\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 JSON.»,»data»:{«status»:400,»json_error_code»:4,»json_error_message»:»Syntax error»}}с горем пополам разобрался. получилось следующее:
текс на другой строке
приводим виду:
текс\r\nна\ другой\ строке
заменяем \r\n не тег новой строки <p>
текс <p>на\ другой\ строке
и удаляем все \
текс <p>на другой строке
такой текст публикуется
возможно будет полезнее функция https://www.php.net/manual/ru/function.nl2br.php
новая беда!
если в тексте есть ссылка на ютуб видео, то она публикуется как обычный тек, а не трансформируется во вставленное видео, как при обычной публикации контента. если запись обновить(их админки), видео работает корректно.
при попытке заменить урл на видео фреймом вставки, происходит отказ публикации.(так и должно быть)
при попытке закодировать фрейм в urlencoded, код публикуется без раскодирования.
Что посоветуете?может включить надо что-то? для декодировки
При публикации через обычный редактор плагин оборачивает ютуб ссылку в html теги
<div class="jetpack-video-wrapper"><span class="embed-youtube" style="text-align:center; display: block;"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/7tAN95lKlBY?version=3&rel=1&fs=1&autohide=2&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></span></div>
при публикации через апи это не происходит.
Если попробовать добавить этот код в тело поста, происходит ошибка.
Если закодировать теги в encoded
%0A%3Cdiv%20class%3D%22jetpack-video-wrapper%22%3E%3Cspan%20class%3D%22embed-youtube%22%20style%3D%22text-align%3Acenter%3B%20display%3A%20block%3B%22%3E%3Ciframe%20class%3D%27youtube-player%27%20type%3D%27text%2Fhtml%27%20width%3D%27640%27%20height%3D%27360%27%20src%3D%27https%3A%2F%2Fwww.youtube.com%2Fembed%2F1Nl7HNCiTFY%3Fversion%3D3%26%23038%3Brel%3D1%26%23038%3Bfs%3D1%26%23038%3Bautohide%3D2%26%23038%3Bshowsearch%3D0%26%23038%3Bshowinfo%3D1%26%23038%3Biv_load_policy%3D1%26%23038%3Bwmode%3Dtransparent%27%20allowfullscreen%3D%27true%27%20style%3D%27border%3A0%3B%27%3E%3C%2Fiframe%3E%3C%2Fspan%3E%3C%2Fdiv%3E%0A
оно прям так и публикуется, без раскодировки.не пойму как с этим бороться
- Тема «не публикует контент с помощью rest api» закрыта для новых ответов.