How to oEmbed MySite in Wordpress
Alguém poderia me ajudar a entender como depurar isso e o que fazer?
Em resumo
Eu criei um provedor oembed e o adicionei ao wordpress. Vejo que o wordpress obteve em resposta o json correto. Mas não há mais nenhuma solicitação para a foto no url fornecido.
Tudo o que eu sei
Basicamente, tenho um site wordpress e quero incorporar uma imagem de outro site meu enquanto escrevo um post.
Eu adicionei o
wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );
função no functions.php (no site wordpress). E depois disso, agora que eu colo um link enquanto escrevo um post, o processo de incorporação acontece, mas ainda não há imagem nem nada. Não sei como depurar isso.
Vejo em meus logs do nginx,
/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json
esse wordpress fez uma solicitação a esse ponto de extremidade.
se eu fizer a mesma solicitação no navegador, meu back-end laravel retorna:
{
"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'>"
}
Mas depois que o woordpress recebe isso, não há mais solicitações para a imagem real no
https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg
ponto final.
Por que o woordpress não está fazendo uma solicitação para a imagem e exibindo-a na IU do editor de postagem e postagem?
Estou esperando que apareça uma imagem com uma descrição quando colo um link no editor "gutenberg" do woordpress.
ps. quando vejo o html do bloco visualmente editável no editor gutenberg, este é o html gerado (tudo parece estar em ordem lá)
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>
Respostas
Acho que a implementação do oEmbed está errada. Você pode ver na classe WP-oEmbed que o WordPress suporta quatro valores de tipo: photo, video, link e rich; enquanto você está retornando type = image.
Na seção de especificações 2.3.4, parece que a lista do WordPress está completa e a 'imagem' geralmente não é suportada. Você possivelmente quis dizer type = photo, mas eles geralmente não estão vinculados e têm propriedades obrigatórias de altura e largura que você não está fornecendo.
Então, acho que suas opções são:
- mude seu provedor oEmbed para retornar um type = rich em vez disso e gere o HTML para incluir lá
- estenda o WordPress para suportar type = image: implemente o filtro oembed_dataparse (chamado da parte inferior da função que vinculei acima), detecte type = image lá e retorne o HTML gerado que você deseja incluir dos dados oEmbed retornados.
No entanto, é provável que você também tenha que estender Gutenberg para trabalhar com o novo tipo, e não tenho certeza de como fazer isso.