禁用WordPress嵌入功能提升网站性能方法
在Web性能优化领域,任何微小的改进都能带来显著的效果。随着时间的推移,这些看似微不足道的优化技巧能够累积成可观的加载时间缩短。此前,我们曾分享过如何在WordPress中禁用表情符号,今天我们将聚焦于另一个重要的性能优化点——如何在WordPress中禁用嵌入功能。
WordPress 4.4版本将oEmbed功能正式整合到核心中,这一功能允许用户通过简单粘贴URL来嵌入YouTube视频、推文等多种资源。WordPress会自动将这些URL转换为嵌入内容,并在可视化编辑器中提供实时预览。例如,当我们从Twitter粘贴以下URL时:https://twitter.com/kinsta/status/760489262127120385,它会被自动转换为下方展示的嵌入推文。您可以通过官方文档查看所有支持的嵌入类型。
WordPress长期以来一直是oEmbed的消费者,但随着版本的迭代,WordPress自身也成为了oEmbed提供者。这一功能对许多用户来说非常实用,您可能希望保持其启用状态。然而,这也意味着每次访问您的WordPress站点时,都会额外生成一个HTTP请求来加载wp-embed.min.js文件。虽然这个文件仅有1.7KB大小,但累积起来的请求数量会随着时间的推移而显著增加。实际上,请求本身对性能的影响有时甚至超过内容下载的大小。
### 如何在WordPress中禁用嵌入功能
有多种方法可以在WordPress中禁用嵌入功能,包括使用免费插件、添加代码或内联缩小的JS文件。
#### 插件禁用嵌入
使用插件是最简单直接的方法之一。Disable Embeds插件由WordPress核心贡献者Pascal Birchler开发,这个插件极其轻量,仅有3KB大小。截至本文撰写时,该插件已拥有超过20,000次活跃安装。您可以从WordPress插件库下载,或在WordPress仪表盘中的“插件-安装插件”下搜索到它。无需任何配置,只需安装并激活,额外的JavaScript文件就会自动消失。该插件的主要特点包括:
– 防止他人嵌入您的网站内容
– 防止您嵌入未列入白名单的网站
– 禁止在您的WordPress网站上加载JavaScript文件
– 仍然支持使用YouTube和Twitter的嵌入iframe脚本
– 可配合perfmatters等高级插件进行更全面的网站优化
#### 代码禁用嵌入
如果您倾向于不使用插件,也可以通过添加代码来禁用嵌入功能。首先,请确保创建网站备份,然后,将以下代码添加到您主题的functions.php文件中。请注意,这段代码来源于Disable Embeds插件:
“`php
function disable_embeds_code_init() {
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 );
remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ );
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’ );
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函数:
“`php
function my_deregister_scripts(){
wp_dequeue_script( ‘wp-embed’ );
}
add_action( ‘wp_footer’, ‘my_deregister_scripts’ );
“`
#### 内联缩小的JS
第三种选择是将wp-embed.min.js文件的内容内联嵌入到您的页面中。这种方法适用于文件非常小或代码量不大的情况。如果您只是想减少HTTP请求,但仍然希望保留嵌入功能,那么这是一个可行的方案。
通过以上方法,您可以有效地优化WordPress站点的性能,减少不必要的HTTP请求,提升用户体验。选择适合您需求的方式,让您的网站运行得更快、更流畅。