So integrieren Sie MySite in Wordpress
Könnte mir bitte jemand helfen zu verstehen, wie man das debuggt und was zu tun ist?
Zusamenfassend
Ich habe einen OEMBED-Anbieter erstellt und ihn zu WordPress hinzugefügt. Ich sehe, dass WordPress als Antwort den richtigen JSON bekam. Es gibt jedoch keine weitere Anfrage für das Bild unter der angegebenen URL.
Alles, was ich weiß
Im Grunde habe ich eine WordPress-Site und möchte beim Schreiben eines Beitrags ein Bild von einer anderen Site von mir einbetten.
Ich habe das hinzugefügt
wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );
Funktion in der functions.php (in der WordPress-Site). Und danach, wenn ich beim Schreiben eines Beitrags einen Link einfüge, geschieht der Einbettungsprozess, aber immer noch kein Bild oder irgendetwas. Ich weiß nicht, wie ich das debuggen soll.
Ich sehe in meinen Nginx-Protokollen,
/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json
Dieser WordPress hat eine Anfrage an diesen Endpunkt gestellt.
Wenn ich dieselbe Anfrage im Browser stelle, gibt mein Laravel-Backend Folgendes zurück:
{
"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'>"
}
Aber nachdem woordpress dies erhalten hat, gibt es keine weiteren Anfragen für das eigentliche Bild bei der
https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg
Endpunkt.
Warum fordert woordpress das Bild nicht an und zeigt es in der Benutzeroberfläche des Posts und des Post-Editors an?
Ich erwarte ein Bild mit einer Beschreibung, wenn ich einen Link in den Woordpress-Editor "gutenberg" einfüge.
ps. Wenn ich mir das HTML des visuell bearbeitbaren Blocks im Gutenberg-Editor ansehe, ist dies das generierte HTML (dort scheint alles in Ordnung zu sein).
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>
Antworten
Ich denke, Ihre oEmbed-Implementierung ist falsch. Sie können in der WP-oEmbed-Klasse sehen, dass WordPress vier Typwerte unterstützt: Foto, Video, Link und Rich; wohingegen Sie type = image zurückgeben.
Aus dem Spezifikationsabschnitt 2.3.4 geht hervor, dass die Liste von WordPress vollständig ist und 'image' im Allgemeinen nicht unterstützt wird. Sie haben möglicherweise type = photo gemeint, aber diese sind im Allgemeinen nicht verknüpft und haben obligatorische Eigenschaften für Höhe und Breite, die Sie nicht angeben.
Ich denke, Ihre Optionen sind:
- Ändern Sie Ihren oEmbed-Anbieter so, dass stattdessen type = rich zurückgegeben wird, und generieren Sie den HTML-Code, der dort enthalten sein soll
- Erweitern Sie WordPress, um type = image zu unterstützen: Implementieren Sie den Filter oembed_dataparse (der am Ende der oben verlinkten Funktion aufgerufen wird), erkennen Sie dort type = image und geben Sie den generierten HTML-Code zurück, den Sie aus den zurückgegebenen oEmbed-Daten einschließen möchten.
Es besteht jedoch die Möglichkeit, dass Sie Gutenberg auch erweitern müssen, um mit dem neuen Typ zu arbeiten, und ich bin mir nicht sicher, wie ich das tun soll.