Bagaimana oEmbed MySite di Wordpress
Bisakah seseorang membantu saya memahami cara men-debug ini dan apa yang harus dilakukan?
Pendeknya
Saya membuat penyedia oembed dan menambahkannya ke wordpress. Saya melihat bahwa wordpress mendapat jawaban json yang benar. Tetapi tidak ada permintaan lebih lanjut untuk gambar di url yang disediakan.
Yang saya tahu
Jadi pada dasarnya saya memiliki situs wordpress dan saya ingin menyematkan gambar dari situs saya yang lain saat menulis postingan.
Saya menambahkan
wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );
berfungsi di functions.php (di situs wordpress). Dan setelah itu, sekarang ketika saya menempelkan tautan saat menulis posting, proses penyematan terjadi, tetapi masih tidak ada gambar atau apa pun. Saya tidak tahu cara men-debug ini.
Saya melihat di log nginx saya,
/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json
wordpress itu memang membuat permintaan ke titik akhir itu.
jika saya membuat permintaan yang sama di browser backend laravel saya kembali:
{
"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'>"
}
Tetapi setelah woordpress menerima ini tidak ada permintaan lebih lanjut untuk gambar sebenarnya di
https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg
titik akhir.
Mengapa woordpress tidak membuat permintaan untuk gambar dan menampilkannya di UI editor posting dan posting?
Saya mengharapkan gambar dengan deskripsi muncul ketika saya menempelkan link di editor "gutenberg" woordpress.
ps. ketika saya melihat html dari blok yang dapat diedit secara visual di editor gutenberg, ini adalah html yang dihasilkan (semuanya tampaknya beres di sana)
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>
Jawaban
Saya pikir implementasi oEmbed Anda salah. Anda dapat melihat di kelas WP-oEmbed bahwa WordPress mendukung empat jenis nilai: foto, video, tautan, dan kaya; sedangkan Anda mengembalikan type = image.
Dari bagian spesifikasi 2.3.4 sepertinya daftar WordPress sudah lengkap dan 'gambar' umumnya tidak didukung. Anda mungkin bermaksud type = photo, tapi itu umumnya tidak terkait dan memiliki properti tinggi dan lebar wajib yang tidak Anda sediakan.
Jadi menurut saya pilihan Anda adalah:
- ubah penyedia oEmbed Anda untuk mengembalikan type = rich sebagai gantinya, dan buat HTML untuk disertakan di sana
- memperluas WordPress untuk mendukung type = image: terapkan filter oembed_dataparse (dipanggil dari bagian bawah fungsi yang saya tautkan di atas), deteksi type = image di sana dan kembalikan HTML yang ingin Anda sertakan dari data oEmbed yang dikembalikan.
Namun kemungkinan besar Anda juga harus memperluas Gutenberg untuk bekerja dengan tipe baru juga, dan saya tidak yakin bagaimana melakukannya.