วิธี oEmbed MySite ใน Wordpress
ใครช่วยได้โปรดช่วยฉันเข้าใจวิธีแก้จุดบกพร่องนี้และต้องทำอย่างไร
ในระยะสั้น
ฉันสร้างผู้ให้บริการ oembed และเพิ่มลงใน wordpress ฉันเห็นว่า wordpress ตอบสนองต่อ json ที่ถูกต้อง แต่ไม่มีการขอรูปภาพเพิ่มเติมที่ url ที่ให้มา
ทั้งหมดที่ฉันรู้
โดยพื้นฐานแล้วฉันมีไซต์ wordpress และฉันต้องการฝังรูปภาพจากไซต์อื่นของฉันในขณะที่เขียนโพสต์
ฉันเพิ่มไฟล์
wp_oembed_add_provider( 'https://dynamicallyLoadedSPA.com/*', 'https://laravelBackend.com/oembed/', false );
ฟังก์ชันใน functions.php (ในไซต์ wordpress) และหลังจากนั้นตอนนี้เมื่อฉันวางลิงค์ในขณะที่เขียนโพสต์กระบวนการฝังก็เกิดขึ้น แต่ยังไม่มีภาพหรืออะไรเลย ฉันไม่รู้วิธีแก้จุดบกพร่องนี้
ฉันเห็นในบันทึก nginx ของฉัน
/oembed/?maxwidth=1060&maxheight=1000&url=https://dynamicallyLoadedSPA.com/some-link-with-picture-and-description&dnt=1&format=json
wordpress ทำการร้องขอไปยังจุดสิ้นสุดนั้น
หากฉันส่งคำขอเดียวกันในเบราว์เซอร์แบ็กเอนด์ laravel ของฉันจะส่งคืน:
{
"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'>"
}
แต่หลังจากที่ woordpress ได้รับสิ่งนี้จะไม่มีการร้องขอเพิ่มเติมสำหรับรูปภาพจริงที่ไฟล์
https://img.laravelBackend.com/goods/4289/Untitled-2-04.jpg
จุดสิ้นสุด
เหตุใด woordpress จึงไม่ขอรูปภาพและแสดงในโพสต์และ UI ของโปรแกรมแก้ไขโพสต์
ฉันคาดหวังว่ารูปภาพที่มีคำอธิบายจะปรากฏขึ้นเมื่อฉันวางลิงก์ในตัวแก้ไข "gutenberg" ของ woordpress
ปล. เมื่อฉันดู html ของบล็อกที่แก้ไขได้ด้วยสายตาในโปรแกรมแก้ไข gutenberg นี่คือ html ที่สร้างขึ้น (ทุกอย่างดูเหมือนจะเป็นไปตามลำดับ)
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dynamicallyLoadedSPA.com/sausages
</div></figure>
คำตอบ
ฉันคิดว่าการใช้งาน oEmbed ของคุณไม่ถูกต้อง คุณสามารถดูได้ในคลาส WP-oEmbedว่า WordPress รองรับค่าสี่ประเภท: ภาพถ่ายวิดีโอลิงค์และรวย ในขณะที่คุณกำลังส่งคืน type = image
จากส่วนข้อมูลจำเพาะ 2.3.4 ดูเหมือนว่ารายการของ WordPress จะเสร็จสมบูรณ์แล้วและโดยทั่วไปไม่รองรับ "รูปภาพ" คุณอาจหมายถึง type = photo แต่โดยทั่วไปแล้วจะไม่เชื่อมโยงและมีคุณสมบัติความสูงและความกว้างบังคับที่คุณไม่ได้จัดหา
ดังนั้นฉันคิดว่าตัวเลือกของคุณคือ:
- เปลี่ยนผู้ให้บริการ oEmbed ของคุณเพื่อส่งคืน type = rich แทนและสร้าง HTML เพื่อรวมไว้ที่นั่น
- ขยาย WordPress เพื่อรองรับ type = image: ใช้ตัวกรองoembed_dataparse (เรียกจากด้านล่างของฟังก์ชันที่ฉันเชื่อมโยงด้านบน) ตรวจหา type = image ที่นั่นและส่งคืนการสร้าง HTML ที่คุณต้องการรวมจากข้อมูล oEmbed ที่ส่งคืน
อย่างไรก็ตามมีโอกาสที่คุณจะต้องขยาย Gutenberg เพื่อทำงานกับประเภทใหม่ด้วยและฉันไม่แน่ใจว่าจะทำอย่างไร