前言
自從WordPress升級至4.4正式版(2015年12月初),增加了Embed功能,系統默認在前端頁面底部加載一個名為wp-embed.min.js的文件。其實對於絕大多數網站來講,都不用不到這個Embed功能,可以將其關閉,但後台名沒有相關選項。
Embed功能簡單的說就是“內容嵌入” —— WordPress 可以很方便地嵌入其他網站的富文本內容,當然,需要那些網站支持oEmbed 標準—— 不僅僅YouTube, Flickr, Twitter,你甚至可以嵌入來自其他WordPress網站的文章預覽,只需要單獨一行添加URL鏈接即可。
但這個舶來品的功能暫時並沒有什麼卵用,在國內也並不流行(不排除後面會有更多用途),而且後台沒有提供相應的關閉按鈕,那該怎麼關閉呢?
禁用Embed功能
方法一:
鑑於很多網站有關閉此功能的需求,WordPress官方開發了一個插件Disable Embeds,大家可以在插件安裝後台搜索進行安裝。
方法二:
本站少用插件的原則,筆者更建議大家自行將代碼配置到主題中,(注意:插件的好處就是不會因為更換主題而失效)
將以下代碼直接放入主題函數模板functions.php中即可。
函數disable_embeds_init (){
/ * @var WP $ wp * /
全球$ wp ;
//刪除嵌入的查詢變量。
$ wp- > public_query_vars = array_diff ($ wp- > public_query_vars ,array (
“嵌入” ,
) );
//刪除REST API端點。
remove_action ('rest_api_init' ,'wp_oembed_register_route' );
// 關掉
add_filter ('embed_oembed_discover' ,'__return_false ' );
//不要過濾嵌入的結果。
remove_filter ('oembed_dataparse' ,'wp_filter_oembed_result' ,10 );
//刪除oEmbed發現鏈接。
remove_action ('wp_head' ,'wp_oembed_add_discovery_links' );
//從前端和後端刪除特定於oEmbed的JavaScript。
remove_action ('wp_head' ,'wp_oembed_add_host_js' );
add_filter ('tiny_mce_plugins' ,'disable_embeds_tiny_mce_plugin' );
//刪除所有嵌入重寫規則。
add_filter ('rewrite_rules_array' ,'disable_embeds_rewrites' );
}
add_action ('init' ,'disable_embeds_init' ,9999 );
/**
*刪除“ wpembed” TinyMCE插件。
*
* @自1.0.0起
*
* @param array $ plugins TinyMCE插件列表。
* @return array修改後的列表。
*/
函數disable_embeds_tiny_mce_plugin ($ plugins ){
返回array_diff ($ plugins ,array ('wpembed' ));
}
/**
*刪除所有與嵌入相關的重寫規則。
*
* @自1.2.0起
*
* @param array $ rules WordPress重寫規則。
* @return array無需嵌入規則即可重寫規則。
*/
function disable_embeds_rewrites ($ rules ){
foreach ($ rules as $ rule => $ rewrite ){
if (false !== strpos ($ rewrite ,'embed = true' )){
未設置($ rules [ $ rule ] );
}
}
返回$ rules ;
}
/**
*刪除插件激活時的嵌入重寫規則。
*
* @自1.2.0起
*/
函數disable_embeds_remove_rewrite_rules (){
add_filter ('rewrite_rules_array' ,'disable_embeds_rewrites' );
flush_rewrite_rules ();
}
register_activation_hook (__FILE__ ,'disable_embeds_remove_rewrite_rules' );
/**
*刷新有關插件停用的重寫規則。
*
* @自1.2.0起
*/
函數disable_embeds_flush_rewrite_rules (){
remove_filter ('rewrite_rules_array' ,'disable_embeds_rewrites' );
flush_rewrite_rules ();
}
register_deactivation_hook (__FILE__ ,'disable_embeds_flush_rewrite_rules' );
對於此類代碼較長的功能,筆者一貫的建議就是將其單獨放入一個文件,在functions.php引入,這樣更利於後期維護,整個functions.php文件也會顯得更加整潔。
方法:创建disable_embeds.php文件
放入主題文件夾(如筆者將此類功能都放入主題中的includes文件夾)然後在functions.php引入
//禁止加載wp-embeds.mins.js
包括(TEMPLATEPATH 。'/includes/disable_embeds.php' );
必须 注册 为本站用户, 登录 后才可以发表评论!