Как внедрить MySite в Wordpress

Sep 30 2020

Может ли кто-нибудь помочь мне понять, как это отладить и что делать?

Короче

Я создал поставщика 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>

Ответы

Rup Sep 30 2020 at 06:43

Я думаю, что ваша реализация 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 для работы с новым типом, и я не уверен, как это сделать.