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

WordPress站点textarea复制时直引号变弯引号导致代码失效如何解决

问题原因

该问题的根源是WordPress自带的wptexturize过滤器,默认会对所有文章内容中的直引号进行转换,替换为符合排版规范的弯引号,该规则也会作用于文章内嵌入的textarea内容,导致textarea实际渲染的内容已经是弯引号,用户复制后自然会拿到错误格式的代码。

可行解决方案

方案1:精准关闭当前内容的引号转换规则

不要全站关闭wptexturize(会影响全站内容排版),你可以在输出这段textarea代码的位置,临时移除该过滤器,输出完成后再恢复:

// 临时移除引号转换过滤器
remove_filter( 'the_content', 'wptexturize' );
// 输出你的textarea代码,和你之前写的一致
echo '<textarea style="resize: none; margin: 0px; padding: 5px; max-width: 100%; height: 150px; width: 720px;" readonly="readonly">
    <a href="https://fdmotion.com">
        <img src="https://fdmotion.com/wp-content/uploads/2021/09/banner1.jpg" alt="FDMotion Custom Orthotics" />
    </a>
</textarea>';
// 恢复过滤器,不影响后续内容的排版
add_filter( 'the_content', 'wptexturize' );

如果你的这段代码是通过短代码输出的,把上面的逻辑放到短代码的处理函数里即可。

方案2:添加一键复制功能,避免手动复制的转义问题

直接通过JS将原始正确的代码写入用户剪贴板,完全绕过手动复制可能产生的格式转换问题,同时也提升用户体验:
首先修改你的HTML结构,增加一个复制按钮:

<textarea id="embed-code" style="resize: none; margin: 0px; padding: 5px; max-width: 100%; height: 150px; width: 720px;" readonly="readonly">
    <a href="https://fdmotion.com">
        <img src="https://fdmotion.com/wp-content/uploads/2021/09/banner1.jpg" alt="FDMotion Custom Orthotics" />
    </a>
</textarea>
<button id="copy-btn">复制引用代码</button>

然后添加对应的JS代码:

document.getElementById('copy-btn').addEventListener('click', async function() {
    const code = document.getElementById('embed-code').value;
    try {
        await navigator.clipboard.writeText(code);
        this.textContent = '复制成功';
        setTimeout(() => {
            this.textContent = '复制引用代码';
        }, 2000);
    } catch (err) {
        this.textContent = '复制失败,请手动复制';
    }
});

方案3:通过自定义字段存储引用代码

不需要修改过滤器规则,你可以在文章编辑页新增一个自定义字段,字段名比如embed_code,将你要输出的引用代码直接填写到自定义字段的值中,输出的时候直接调用自定义字段内容即可:

$embed_code = get_post_meta( get_the_ID(), 'embed_code', true );
if ( $embed_code ) {
    echo '<textarea style="resize: none; margin: 0px; padding: 5px; max-width: 100%; height: 150px; width: 720px;" readonly="readonly">' . esc_textarea( $embed_code ) . '</textarea>';
}

WordPress默认不会对自定义字段的内容执行wptexturize转换,所以不会出现引号被替换的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:02