Как внедрить MySite в Wordpress
Может ли кто-нибудь помочь мне понять, как это отладить и что делать?
Короче
Я создал поставщика oembed и добавил его в wordpress. Я вижу, что wordpress получил в ответ правильный json. Но дальнейших запросов на изображение по указанному URL нет.
Все я знаю
Итак, в основном у меня есть сайт на wordpress, и я хочу встроить изображение с другого моего сайта при написании сообщения.
Я добавил
wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );
функцию в functions.php (на сайте wordpress). И после этого, теперь, когда я вставляю ссылку во время написания сообщения, происходит процесс встраивания, но все еще нет изображения или чего-то еще. Я не знаю, как это отладить.
Я вижу в журналах nginx,
/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json
этот wordpress действительно сделал запрос к этой конечной точке.
если я сделаю тот же запрос в браузере, мой бэкэнд laravel вернется:
{
"title": "Sausages",
"description": "expiration date: 2020.10.01, 10euro",
"url": "https://dynamicallyLoadedSPA.com/sausages",
"type": "image",
"tags": "food",
"image": "https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg",
"code": "<img src='https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg'>"
}
Но после того, как woordpress получит это, больше не будет запросов на фактическое изображение на
https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg
конечная точка.
Почему woordpress не запрашивает изображение и не отображает его в пользовательском интерфейсе редактора сообщений?
Я ожидаю, что картинка с описанием появится, когда я вставлю ссылку в редактор woordpress "gutenberg".
пс. когда я смотрю на html визуально редактируемого блока в редакторе Gutenberg, это сгенерированный html (там вроде все в порядке)
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>
Ответы
Я думаю, что ваша реализация oEmbed неверна. В классе WP-oEmbed вы можете видеть, что WordPress поддерживает четыре значения типа: photo, video, link и rich; тогда как вы возвращаете type = image.
Из раздела спецификаций 2.3.4 похоже, что список WordPress является полным, а «изображение» обычно не поддерживается. Возможно, вы имели в виду type = photo, но они обычно не связаны и имеют обязательные свойства высоты и ширины, которые вы не предоставляете.
Итак, я думаю, что у вас есть следующие варианты:
- измените своего поставщика oEmbed, чтобы вместо этого возвращал type = rich, и сгенерируйте HTML для включения туда
- расширить WordPress для поддержки type = image: реализовать фильтр oembed_dataparse (вызываемый снизу функции, которую я указал выше), определить там type = image и вернуть сгенерированный HTML-код, который вы хотите включить, из возвращенных данных oEmbed.
Однако есть вероятность, что вам также придется расширить Gutenberg для работы с новым типом, и я не уверен, как это сделать.