WordPress自动嵌入是什么?怎样关闭自动嵌入?(嵌入,关闭,WordPress.....)

feifei123 发布于 2025-09-17 阅读(4)
WordPress的oEmbed功能可自动将URL转为嵌入内容,提升便利性但影响性能、控制力与隐私。通过在functions.php添加代码可彻底关闭该功能,虽降低操作便捷性,但能提升加载速度、增强安全性,并可通过手动iframe、短代码、专用插件或自托管等方式实现更可控的内容嵌入。

wordpress自动嵌入是什么?怎样关闭自动嵌入?

WordPress的自动嵌入功能,简单来说,就是当你把某些特定网站(比如YouTube视频链接、Twitter推文链接)的URL粘贴到文章编辑器里时,WordPress会自动将其转换成可直接观看或互动的嵌入内容,而不需要你手动去复制粘贴复杂的嵌入代码。至于如何关闭它,最直接的方法通常是通过主题的

functions.php
文件添加一段代码,或者使用特定的插件来管理。

解决方案

要彻底关闭WordPress的自动嵌入(oEmbed)功能,你可以将以下代码片段添加到你的主题(或子主题)的

functions.php
文件中。请务必在使用子主题时进行此操作,以避免主题更新时代码丢失。

function disable_embeds_init() {
    // 移除所有与oEmbed相关的功能
    remove_action( 'rest_api_init', 'wp_oembed_register_rest_route' );
    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' );
    remove_action( 'embed_head', 'enqueue_embed_scripts' );
    remove_filter( 'embed_oembed_html', 'embed_oembed_html' );
    remove_action( 'embed_content_emojis', 'disable_embed_content_emojis' );
    remove_action( 'the_content_feed', 'wp_oembed_activate_service', 10 );
    remove_action( 'the_content_rss', 'wp_oembed_activate_service', 10 );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );

    // 禁用oEmbed自动发现
    add_filter( 'embed_oembed_discover', '__return_false' );

    // 禁用oEmbed解析
    add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
    add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
    add_filter( 'query_vars', 'disable_embeds_query_vars' );
    add_filter( 'wp_enqueue_scripts', 'disable_embeds_dequeue_scripts' );
}
add_action( 'init', 'disable_embeds_init', 9999 );

// 移除TinyMCE的oEmbed插件
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;
}

// 移除查询变量
function disable_embeds_query_vars( $public_query_vars ) {
    return array_diff( $public_query_vars, array( 'embed' ) );
}

// 移除前端脚本和样式
function disable_embeds_dequeue_scripts() {
    wp_dequeue_script( 'wp-embed' );
}

这段代码会从多个层面禁用oEmbed功能,包括REST API路由、头部发现链接、前端脚本以及编辑器插件等,确保其不再自动运行。

WordPress的oEmbed功能究竟是什么,它带来的利弊我怎么看?

说起WordPress的oEmbed,我个人觉得它真是个“爱恨交织”的功能。从技术角度看,oEmbed其实是一种开放标准,允许网站通过提供一个简单的URL来请求并获取另一个网站内容的嵌入代码(HTML),这样一来,你就不需要去目标网站复制一堆复杂的