📜  WordPress oEmbed Funktion abschalten - PHP (1)

📅  最后修改于: 2023-12-03 14:48:32.154000             🧑  作者: Mango

WordPress oEmbed Funktion abschalten - PHP
概述

当你在WordPress发表一篇文章时,它的oEmbed功能会自动将嵌入的链接转换为可嵌入的内容。这个特性可以在文章中添加丰富的媒体内容,但有时也可能对你的网站产生影响。在某些情况下,你可能希望禁用WordPress的oEmbed功能,本文将介绍如何使用PHP禁用WordPress的oEmbed功能。

代码片段

以下代码可以在你的WordPress主题所在的functions.php文件中使用,它会禁用WordPress oEmbed功能:

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 front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Disable the `embed` query var.
 add_filter( 'query_vars', 'disable_embeds_query_var' );

}
add_action( 'init', 'disable_embeds_code_init', 9999 );

/**
* Disable embeds in WordPress from TinyMCE.
*
* @param array $plugins List of TinyMCE plugins.
* @return array Modified list of TinyMCE plugins.
*/
function disable_embeds_tiny_mce_plugin( $plugins ) {
   return array_diff( $plugins, array( 'wpembed' ) );
}

/**
* Remove the `embed` query var.
*
* @param array $vars WordPress query variables.
* @return array Modified WordPress query variables without `embed`.
*/
function disable_embeds_query_var( $vars ) {
   return array_diff( $vars, array( 'embed' ) );
}
详细说明

上面的代码片段包含了一系列对WordPress oEmbed功能进行禁用的操作:

  • 移除REST API端点:使用remove_action()函数来移除wp_oembed_register_route()函数注册的REST API端点,这个REST API端点提供oEmbed功能。
  • 关闭oEmbed自动发现:使用add_filter()函数和__return_false()回调函数来关闭WordPress的oEmbed自动发现功能。这将阻止WordPress在页面头部添加oEmbed元标记,从而防止浏览器自动加载oEmbed脚本。
  • 不过滤oEmbed结果:使用remove_filter()函数将wp_filter_oembed_result()函数从WordPress的'oembed_dataparse'过滤器中删除,以允许oEmbed内容直接通过。
  • 移除oEmbed发现链接:使用remove_action()函数来移除wp_oembed_add_discovery_links()函数,这个函数添加了一个HTML链接元素,其rel属性设置为“oembed”,以指向WordPress oEmbed自动发现功能。
  • 在前后端中移除oEmbed相关的JavaScript:使用remove_action()函数来移除wp_oembed_add_host_js()函数,这个函数将oEmbedHost.min.js的路径添加到页面头部。尽管脚本是异步加载的,但仍可能影响性能。相应地,disable_embeds_tiny_mce_plugin()和disable_embeds_query_var()函数分别在TinyMCE和WordPress查询 中禁用了 oEmbed。
总结

将上述代码片段添加到你的WordPress主题的functions.php文件中,它将禁用WordPress的oEmbed功能,这将有助于提高网站性能并防止恶意第三方为你的网站注入不良内容。