Jak osadzić MySite w Wordpress

Sep 30 2020

Czy ktoś mógłby mi pomóc zrozumieć, jak to debugować i co robić?

W skrócie

Stworzyłem dostawcę oembed i dodałem go do wordpress. Widzę, że wordpress dostał w odpowiedzi poprawny plik json. Ale nie ma dalszych próśb o zdjęcie pod podanym adresem URL.

Wszystko co wiem

Zasadniczo mam witrynę Wordpress i chcę osadzić obraz z innej mojej witryny podczas pisania postu.

Dodałem

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

funkcja w pliku functions.php (w witrynie wordpress). A potem, teraz, kiedy wklejam link podczas pisania postu, następuje proces embrionizacji, ale nadal nie ma obrazu ani nic. Nie wiem, jak to debugować.

Widzę w moich dziennikach Nginx,

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

że wordpress wysłał żądanie do tego punktu końcowego.

jeśli wyślę to samo żądanie w przeglądarce, mój backend laravel zwraca:

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

Ale po tym, jak woordpress otrzyma to, nie ma dalszych próśb o rzeczywisty obraz w

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

punkt końcowy.

Dlaczego woordpress nie prosi o zdjęcie i nie wyświetla go w interfejsie edytora postów i postów?

Spodziewam się, że po wklejeniu linku w edytorze woordpress "gutenberg" pojawi się obrazek z opisem.

ps. kiedy patrzę na html edytowalnego wizualnie bloku w edytorze gutenberga, to jest wygenerowany html (tam wszystko wydaje się być w porządku)

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

Odpowiedzi

Rup Sep 30 2020 at 06:43

Myślę, że twoja implementacja oEmbed jest błędna. W klasie WP-oEmbed widać, że WordPress obsługuje cztery wartości typu: foto, wideo, link i rich; podczas gdy zwracasz type = image.

Z sekcji specyfikacji 2.3.4 wygląda na to, że lista WordPressa jest kompletna, a „obraz” nie jest ogólnie obsługiwany. Prawdopodobnie chodziło Ci o type = photo, ale te zazwyczaj nie są połączone i mają obowiązkowe właściwości wysokości i szerokości, których nie dostarczasz.

Więc myślę, że masz opcje:

  • zmień swojego dostawcę oEmbed, aby zamiast tego zwracał type = rich, i wygeneruj kod HTML, który ma tam zostać
  • rozszerz WordPress, aby obsługiwał type = image: zaimplementuj filtr oembed_dataparse (wywoływany od dołu funkcji, którą połączyłem powyżej), wykryj tam typ = obraz i zwróć wygenerowany kod HTML, który chcesz dołączyć z zwróconych danych oEmbed.
    Jednak są szanse, że będziesz musiał również rozszerzyć Gutenberga, aby pracował z nowym typem, i nie jestem pewien, jak to zrobić.