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

WordPress招聘板TinyMCE编辑器用户提交超链接被引号损坏如何解决

WordPress TinyMCE 超链接异常损坏解决方案

针对用户从Word、其他网页复制粘贴内容导致链接被插入智能引号(%E2%80%9D)、URL异常拼接的问题,可按以下优先级实施方案,所有代码均可直接复制使用,无需PHP开发基础:

方案1:修改TinyMCE编辑器配置,从输入层拦截问题

该方案直接在编辑器层面过滤粘贴内容的异常字符,避免无效内容进入提交流程。
将以下代码添加到你当前使用的WordPress主题的functions.php文件末尾,或者使用自定义代码片段插件插入:

// 自定义TinyMCE配置,修复粘贴链接异常
add_filter('tiny_mce_before_init', 'custom_tinymce_fix_paste_links');
function custom_tinymce_fix_paste_links($mceInit) {
    // 开启粘贴过滤,移除Word等来源的隐藏格式、智能引号
    $mceInit['paste_preprocess'] = "function(plugin, args) {
        // 替换所有智能引号(左/右双引号、单引号)为普通字符
        args.content = args.content.replace(/[“”„«»]/g, '\"').replace(/[‘’‚‹›]/g, \"'\");
        // 清理href属性内的多余引号
        args.content = args.content.replace(/href\s*=\s*[\"']([^\"']*)[\"']/gi, function(match, url) {
            // 移除URL内所有引号类字符,自动补全协议缺失的外部链接
            url = url.replace(/[\"'“”‘’]/g, '').trim();
            if (url.match(/^\/\//) || url.match(/^[a-zA-Z0-9-]+\.[a-zA-Z]{2,}/) && !url.match(/^https?:\/\//)) {
                url = 'https://' + url.replace(/^\/\//, '');
            }
            return 'href=\"' + url + '\"';
        });
    }";
    // 强制链接为绝对路径,避免相对路径拼接问题
    $mceInit['relative_urls'] = false;
    $mceInit['remove_script_host'] = false;
    $mceInit['convert_urls'] = true;
    return $mceInit;
}

方案2:后端提交时二次校验清理,兜底拦截异常

就算编辑器层漏过了问题内容,在内容入库前再做一次全局过滤,确保不会生成异常链接:
同样将以下代码添加到functions.php或自定义代码片段中:

// 提交内容时清理异常链接字符
add_filter('wp_insert_post_data', 'custom_clean_post_links_before_save', 10, 2);
function custom_clean_post_links_before_save($data, $postarr) {
    // 仅处理招聘板对应的文章类型,如果你站点的招聘信息post_type是job,就替换下方的post为你的实际类型
    if ($data['post_type'] != 'post') {
        return $data;
    }
    // 清理所有智能引号编码和实体
    $content = $data['post_content'];
    $content = str_replace(['%E2%80%9D', '%E2%80%9C', '“', '”', '“', '”'], '', $content);
    // 修复异常拼接的URL
    $content = preg_replace('/href\s*=\s*["\']([^"\']*%E2%80%9D[^"\']*)["\']/i', function($matches) {
        $url = $matches[1];
        // 移除当前站点域名前缀和异常字符
        $site_url = preg_quote(home_url(), '/');
        $url = preg_replace("/^{$site_url}[^\/]*\/\"?/i", '', $url);
        $url = str_replace('%E2%80%9D', '', $url);
        // 补全协议
        if (!preg_match('/^https?:\/\//i', $url)) {
            $url = 'https://' . ltrim($url, '/');
        }
        return 'href="' . esc_url($url) . '"';
    }, $content);
    $data['post_content'] = $content;
    return $data;
}

注意:如果你的招聘信息不是默认的文章(post)类型,需要把代码里的post替换为你站点实际的自定义文章类型别名,比如job、recruit等。

方案3:禁用WordPress默认智能引号转换

WordPress默认会把内容里的直引号转换为弯引号,也可能加剧该问题,可添加以下代码关闭该功能:

// 禁用智能引号转换
remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
remove_filter('the_title', 'wptexturize');
remove_filter('comment_text', 'wptexturize');

验证方法

配置完成后,可从Word文档中复制一个带超链接的内容粘贴到TinyMCE编辑器,发布后查看链接是否正常,也可以手动构造带“右双引号的链接测试,确认发布后链接无异常拼接、无多余引号即可。

内容的提问来源于stack exchange,提问作者polg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:33:01