Come incorporare MySite in Wordpress

Sep 30 2020

Qualcuno potrebbe aiutarmi a capire come eseguire il debug di questo e cosa fare?

In breve

Ho creato un provider oembed e l'ho aggiunto a wordpress. Vedo che wordpress ha ricevuto in risposta il json corretto. Ma non ci sono ulteriori richieste per l'immagine all'URL fornito.

Tutto quello che so

Quindi fondamentalmente ho un sito wordpress e voglio incorporare un'immagine da un altro mio sito mentre scrivo un post.

Ho aggiunto il file

wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );

function nel functions.php (nel sito wordpress). E dopo di ciò, ora quando incollo un collegamento mentre scrivo un post avviene il processo di incorporamento, ma ancora nessuna immagine o altro. Non so come eseguire il debug di questo.

Vedo nei miei log di nginx,

/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json

quel wordpress ha fatto una richiesta a quell'endpoint.

se faccio la stessa richiesta nel browser il mio backend laravel restituisce:

{
    "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'>"
}

Ma dopo che woordpress ha ricevuto questo messaggio, non ci sono ulteriori richieste per l'immagine effettiva nel file

https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg

endpoint.

Perché woordpress non effettua una richiesta per l'immagine e la visualizza nell'interfaccia utente di post e post editor?

Mi aspetto che appaia un'immagine con una descrizione quando incollo un collegamento nell'editor "gutenberg" di woordpress.

ps. quando guardo l'html del blocco visivamente modificabile nell'editor gutenberg, questo è l'html generato (tutto sembra essere in ordine lì)

<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>

Risposte

Rup Sep 30 2020 at 06:43

Penso che la tua implementazione oEmbed sia sbagliata. Puoi vedere nella classe WP-oEmbed che WordPress supporta quattro valori di tipo: foto, video, link e rich; mentre stai restituendo type = image.

Dalla sezione delle specifiche 2.3.4 sembra che l'elenco di WordPress sia completo e che "immagine" non sia generalmente supportata. Forse intendevi tipo = foto, ma quelli non sono generalmente collegati e hanno proprietà di altezza e larghezza obbligatorie che non stai fornendo.

Quindi penso che le tue opzioni siano:

  • cambia il tuo provider oEmbed per restituire invece un type = rich e genera l'HTML da includere lì
  • estendi WordPress per supportare type = image: implementa il filtro oembed_dataparse (chiamato dalla parte inferiore della funzione che ho collegato sopra), rileva type = image lì e restituisci il codice HTML generato che desideri includere dai dati oEmbed restituiti.
    Tuttavia è probabile che dovrai anche estendere Gutenberg per lavorare anche con il nuovo tipo, e non sono sicuro di come farlo.