
在Web效能方面,任何優化都不會太小。隨著時間的推移,許多這些小技巧和優化可以開始減少相當多的整體載入時間。在此前,我們分享瞭如何在WordPress中禁用表情符號。今天我們想與您分享如何在WordPress中禁用嵌入。
當他們釋出WordPress 4.4時,他們將oEmbed功能合併到核心中。您之前可能已經看到或使用過它。這允許使用者只需貼上URL即可在其網站上嵌入YouTube視訊、推文和許多其他資源,WordPress會自動將其轉換為嵌入內容,並在視覺化編輯器中提供實時預覽。例如,我們從Twitter貼上了這個URL:https://twitter.com/kinsta/status/760489262127120385,它被轉換成你在下面看到的。您可以檢視官方支援的嵌入型別列表。

嵌入Tweet推文
WordPress長期以來一直是oEmbed消費者,但隨著更新,WordPress 本身成為oEmbed提供者。此功能對很多人都很有用,您可能希望保持啟用狀態。但是,這意味著它現在還會在您的WordPress站點上生成一個額外的HTTP請求來載入wp-embed.min.js檔案。這會載入到每個頁面上。雖然這個檔案只有1.7KB,但這些東西會隨著時間的推移而增加。請求本身有時比內容下載大小更重要。

wp-embed.min.js
在WordPress中禁用嵌入
有幾種不同的方法可以在WordPress中禁用嵌入。您可以使用免費外掛、程式碼或內聯縮小的JS來實現。
1. 使用外掛禁用WordPress嵌入
禁用嵌入的第一種方法是簡單地使用一個名為Disable Embeds的免費外掛,該外掛由Pascal Birchler開發, 他實際上是WordPress的核心貢獻者之一。

Disable embeds外掛
這個外掛超級輕量級,準確地說只有3KB。在撰寫本文時,它目前有超過20,000 次活躍安裝。您可以從WordPress外掛庫下載它 ,也可以在WordPress儀表盤中的“外掛-安裝外掛”下搜尋它。無需配置,只需安裝、啟用,額外的JavaScript檔案就會消失。具有以下特點:
- 防止其他人嵌入您的網站。
- 防止您嵌入其他未列入白名單的網站。
- 禁止在您的WordPress網站上載入JavaScript檔案。
您仍然可以使用YouTube和Twitter的嵌入iframe指令碼嵌入內容。您還可以使用像perfmatters這樣的高階外掛,它允許您禁用嵌入以及對WordPress網站的其他優化。

使用perfmatters外掛禁用嵌入
2. 使用程式碼禁用WordPress嵌入
如果您不想安裝其他外掛,您也可以使用程式碼禁用嵌入。首先建立網站備份,然後,將以下內容新增到您的主題的functions.php檔案中。注意:程式碼來自上面的Disable Embeds外掛。
重要的!如果操作不當,編輯WordPress主題的原始碼可能會破壞您的網站。也就是為什麼要先備份後改程式碼!
function disable_embeds_code_init() {
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}
add_action( 'init', 'disable_embeds_code_init', 9999 );
function disable_embeds_tiny_mce_plugin($plugins) {
return array_diff($plugins, array('wpembed'));
}
function disable_embeds_rewrites($rules) {
foreach($rules as $rule => $rewrite) {
if(false !== strpos($rewrite, 'embed=true')) {
unset($rules[$rule]);
}
}
return $rules;
}
或者您也可以使用wp_dequeue_script函式。
function my_deregister_scripts(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
3. 內聯縮小的JS
第三種選擇是獲取wp-embed.min.js檔案的內容並將其嵌入內聯。這應該只在小檔案或不涉及太多程式碼的情況下完成。如果您只是想擺脫HTTP請求,但仍保留對嵌入的支援,那就是這種情況。

評論留言