You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止WordPress链接编辑器自动添加http://前缀?

如何阻止WordPress链接编辑器自动添加http://前缀?

我太懂这种烦恼了——明明ACF字段里存的是完整的带https://的链接,结果用编辑器的链接工具时,它非要自动补个http://,最后变成http://https://example.com这种无效链接,完全是帮倒忙。下面给你几个实用的解决办法,从代码修改到模板优化都有,你可以根据自己的情况选:

方法一:修改Gutenberg编辑器的链接处理逻辑(代码实现)

我们可以通过WordPress的钩子,注入自定义JS来覆盖Gutenberg默认的链接补全行为,让它只在URL没有协议前缀的时候才添加http://。把下面的代码放到你当前主题的functions.php文件里,或者自己建一个简单的自定义插件:

add_filter('block_editor_settings_all', 'prevent_auto_http_prefix');
function prevent_auto_http_prefix($settings) {
    // 往编辑器里注入自定义脚本
    $settings['script'] .= "
        wp.domReady(function() {
            // 保存原有的创建链接方法
            const originalCreateLink = wp.richText.createLink;
            // 重写这个方法
            wp.richText.createLink = function(attributes, value) {
                let url = attributes.url;
                // 检查URL是否已经包含http/https前缀
                if (url && !url.match(/^https?:\\/\\//i)) {
                    // 只有当没有前缀时才添加http://
                    url = 'http://' + url;
                }
                attributes.url = url;
                // 调用原方法完成链接创建
                return originalCreateLink(attributes, value);
            };
        });
    ";
    return $settings;
}

这段代码的核心是判断URL是否已有协议前缀,只有完全没有的时候才自动补http://,完美避免重复的问题。

方法二:直接在模板中渲染ACF链接(更省心的方案)

既然你的链接是存在ACF自定义字段里的,其实完全可以绕开编辑器的链接工具,直接在自定义文章模板里把文本和链接关联起来。这样既不会有编辑器自动补前缀的问题,还更安全(做了转义处理)。比如:

<?php
// 替换成你实际的ACF字段名
$cta_link = get_field('cta_link');
if ($cta_link) {
    echo '<a href="' . esc_url($cta_link['url']) . '" target="' . esc_attr($cta_link['target'] ?? '_self') . '">' . esc_html($cta_link['title']) . '</a>';
}
?>

这样用户编辑的时候只需要维护ACF字段里的链接,模板会自动渲染成正确的<a>标签,根本不用碰编辑器的链接功能。

方法三:用插件解决(不想写代码的话)

如果不想折腾代码,可以找一些编辑器增强类的插件。比如Advanced Editor Tools(原TinyMCE Advanced),它在经典编辑器下可以关闭自动添加http的功能,Gutenberg下也有对应的适配选项。另外也可以搜索“disable auto http prefix WordPress”,找专门处理这个问题的轻量插件,记得选评分高、更新活跃的,避免引入冗余代码。

补充:经典编辑器的处理办法

如果你用的是经典编辑器(不是Gutenberg),可以用下面的代码修改TinyMCE的配置,关闭自动补前缀的行为:

add_filter('tiny_mce_before_init', 'disable_tinymce_auto_http');
function disable_tinymce_auto_http($init) {
    $init['relative_urls'] = false;
    $init['remove_script_host'] = false;
    $init['convert_urls'] = false;
    return $init;
}

备注:内容来源于stack exchange,提问作者Ignas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:29:50