问题


wp-embed.min.js文件有什么作用?我注意到它已添加到我的博客页面页脚的末尾。
如何摆脱它?

工作量

经过一番谷歌搜索后,我发现了Embeds在食典上。为什么WordPress认为我默认情况下想在页面上添加视频等?

环境

WordPress 4.4

评论

这可能与wp作为oEmbed服务器而不是客户端有关

我试图将答案添加到问题的第一部分

可以肯定它只是在那儿,以降低您的页面速度。

@MarkKaplun是正确的。 wp-embed.min.js允许您通过oEmbed将来自远程WordPress网站的帖子嵌入到自己的WordPress网站中。

#1 楼

我终于可以使用以下方法摆脱它:

function my_deregister_scripts(){
  wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );


评论


将其添加到动作“ wp_enqueue_scripts”上似乎也可行。

–andershagbard
16年1月13日在16:09

是的,我将使用wp_enqueue_scripts钩子和wp_dequeue_script()代替wp_deregister_script()

–swissspidy
16年1月17日在20:06

@swissspidy wp_dequeue_script('wp-embed');将无法正常工作-您可以进行测试吗?引擎盖建议有效。

–阿兹
16年5月5日在22:38

在WordPress 4.6下,@ Trix脚本可以正常工作。谢谢!

–塞巴斯蒂安
16年9月6日在9:07

使用此方法不会通过themecheck。

–lowtechsun
17年6月12日在10:28

#2 楼

我到达这个线程时遇到了同样的问题:wp-embed.min.js文件做什么?

首先,我可以肯定embed.min.js与嵌入其他提供商(例如Vimeo,YouTube等)的嵌入内容无关。您可以删除embed .min.js以及这些嵌入将继续起作用。

它与嵌入其他人的博客/网站中的WordPress帖子特别相关。在WordPress帖子中嵌入WordPress帖子:太元了!此功能是WordPress 4.4中引入的。

禁用embed.min.js将使该功能无法在您的网站上使用。

您可以轻松地进行测试:将其他人的WordPress帖子的URL粘贴到您自己的帖子中。 WP应该将该URL转换为嵌入式小部件。当您在前端查看帖子时,您会注意到您的标记包含一个blockquote和一个iframe。 blockquote是指向您所嵌入的博客文章的纯文本链接,而iFrame的来源是博客文章的URL,并附加/embed/:其嵌入端点。

embed.min.js隐藏了blockquote并展示iframe它还可以使iframe更好地发挥作用。

现在,尝试使用其他答案中描述的方法之一从页面中删除embed.min.js脚本。重新加载页面,您会注意到blockquote是可见的,但iframe是隐藏的。

简而言之:如果要将其他人的WordPress帖子嵌入到自己的WordPress帖子中,请保留embed.min。 js一个人。如果您不关心此功能,则可以安全地删除它。

评论


请注意,删除embed.js不足以正确禁用嵌入,并且如果操作不当,甚至可能导致奇怪的行为。要完全禁用这些嵌入,请使用官方推荐的“禁用嵌入”插件。

–swissspidy
18年1月22日在14:09

按预期工作,并在word-press 5.x中进行了解释。

– inrsaurabh
19年3月9日在12:30

令人难以置信的是,wp如何在每个单独的版本和官方主题中添加无用的膨胀。

–迈克尔·罗杰斯(Michael Rogers)
7月20日20:49

@swissspidywho推荐吗?似乎被遗弃了。

–迈克尔·罗杰斯(Michael Rogers)
7月20日20:50

#3 楼

Trix的答案在WordPress 4.4.1上对我不起作用,但是我在Disable Embeds WordPress插件的代码中找到了一个解决方案。在主题的functions.php文件中添加以下代码(已修改),以从前端完全删除wp-embed.min.js文件:

add_action( 'init', function() {

    // Remove the REST API endpoint.
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Turn off oEmbed auto discovery.
    // 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');
}, PHP_INT_MAX - 1 );


评论


使用disable_embeds_init()作为函数名称确实是个坏主意。如果有一天要安装Disable Embeds插件,天空将掉下来。我建议您只安装插件,将其添加到主题的functions.php文件中没有任何好处。如果您坚持要这样做,则应该使用另一个函数名。

–swissspidy
16年1月17日在20:08

感谢@swissspidy的建议,我已经更新了函数的名称

– Nadeem Khan
16年1月18日在11:59

请注意,这不仅会从前端/后端删除JS,还会完全禁用将您的帖子嵌入其他网站的功能,WP Oembed无法正常工作

– Tom J Nowell♦
16年11月4日在19:37

Kinsta上的文章详细介绍了使用过滤器将其删除的这种方法kinsta.com/knowledgebase/disable-embeds-wordpress

–安德鲁·舒尔茨(Andrew Schultz)
19年8月30日在13:47

#4 楼

我认为这部分仍然丢失。


wp-embed.min.js文件有什么作用?我注意到它已添加到我的博客页面页脚的末尾。


跟踪该问题的答案。
https://core.trac.wordpress.org/changeset/35708


嵌入:从嵌入式嵌入JS中删除&字符。

较旧版本的WordPress会将那些&字符转换为&,这导致了某些无法正常运行的JS。如果人们正在运行一个较旧的发行版,请不要让他们的生活变得比现在更困难。


它还将尝试嗅探用户代理。

评论


您引用的文本(“从嵌入式JS中删除和字符”等)。是文件的单个提交消息,但未描述脚本的总体用途。我已经提供了自己的答案,希望可以提供更多的启示。

–乔纳森·尼科尔(Jonathan Nicol)
17年11月15日在2:23