How to oEmbed MySite in Wordpress

Sep 30 2020

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

Rup Sep 30 2020 at 06:43

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.