Come incorporare MySite in Wordpress
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
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.