غیرفعال کردن اسکریپت امبد وردپرس (Disable oEmbed)
با قرار دادن کد زیر در functions.php، فایل wp-embed.min.js کاملاً لغو ثبت شده و درخواست اضافه حذف میگردد.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* غیرفعالسازی اسکریپت wp-embed و فیلترهای تعبیهسازی خودکار
*/
function bisco_disable_embeds() {
// لغو ثبت اسکریپت wp-embed در فرانت
wp_deregister_script( 'wp-embed' );
// حذف اندپوینتهای REST API مربوط به امبد
remove_action( 'rest_api_init', 'wp_oembed_register_rest_route' );
// فیلتر کردن کش oEmbed
add_filter( 'embed_oembed_discover', '__return_false' );
// حذف متاتگهای کشف امبد در هدر
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}
add_action( 'init', 'bisco_disable_embeds', 9999 );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php قالب درج کنید.
این کد چگونه کار میکند؟ (How it Works)
تابع wp_deregister_script مانع از تزریق wp-embed.min.js به انتهای صفحه شده و اندپوینتهای مربوط به آن در REST API بسته میشوند.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
در وبسایتهایی که نمیخواهند پستهایشان توسط سایتهای دیگر با کارت امبد نمایش داده شود و به اسکریپت اضافه نیازی ندارند.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
اگر قصد دارید لینکهای وردپرس سایتهای دیگر در داخل مقالات شما به شکل پیشنمایش کارت گرافیکی خودکار باز شوند.
پیشنیازهای اجرا
وردپرس ۴.۴ به بالا.
نحوه تست و اطمینان از عملکرد
در سورس صفحه جستجو کنید؛ عبارت wp-embed.min.js نباید یافت شود.
نحوه بازگردانی سریع (Rollback)
کد را حذف کنید.
خطاهای رایج و راهحل رفع
اگر ویدیوهای آپارات یا یوتیوب را با iframe دستی میگذارید، این کد هیچ مشکلی برای آنها ایجاد نمیکند.
ملاحظات و نکات امنیتی
بستن اندپوینتهای غیرضروری در REST API سطح حمله را کاهش میدهد.
تاثیر بر سرعت و پرفورمنس
کاهش ۱ درخواست HTTP و صرفهجویی در زمان تحلیل JS مرورگر.