Jak osadzić MySite w Wordpress
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
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ć.