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

如何让WooCommerce Product Subtitle插件支持HTML标签输入?

嘿,这个需求我之前帮客户搞定过,给你两个靠谱的方案,既能让商品副标题输入框支持HTML,又尽量避免插件更新带来的问题:

方案1:替换默认的输入过滤规则

WooCommerce Product Subtitle插件默认会用sanitize_text_field()函数过滤输入内容,这个函数会把所有HTML标签都清除掉。我们可以通过钩子替换这个过滤逻辑,让它允许安全的HTML标签:

把下面的代码添加到你的主题functions.php文件里,或者自定义的功能插件中:

// 移除插件默认的副标题输入过滤
remove_filter( 'woocommerce_product_subtitle', 'sanitize_text_field' );
// 替换为允许安全HTML的过滤规则(wp_kses_post会保留常见的安全标签)
add_filter( 'woocommerce_product_subtitle', 'wp_kses_post' );
方案2:自定义副标题输出逻辑(更稳妥)

有时候就算输入允许HTML,插件输出的时候可能会用esc_html()转义内容,导致HTML变成纯文本显示。这时候我们可以替换插件的输出函数,直接输出带HTML的内容:

同样把代码加到主题functions.php或自定义插件里:

// 移除插件默认的副标题输出动作
remove_action( 'woocommerce_single_product_summary', 'woocommerce_product_subtitle_display', 15 );

// 添加自定义的副标题输出函数
add_action( 'woocommerce_single_product_summary', 'custom_product_subtitle_display', 15 );
function custom_product_subtitle_display() {
    global $product;
    // 获取保存的副标题内容
    $subtitle = get_post_meta( $product->get_id(), '_product_subtitle', true );
    
    if ( ! empty( $subtitle ) ) {
        // 输出带HTML的副标题,用wp_kses_post保证安全
        echo '<p class="product-subtitle">' . wp_kses_post( $subtitle ) . '</p>';
    }
}
重要注意事项
  • 安全第一:尽量用wp_kses_post()而不是直接输出原始内容,这个函数会自动过滤掉危险的HTML标签(比如<script>),防止XSS攻击。如果你需要允许特殊标签,可以参考wp_kses()函数自定义允许的标签列表。
  • 避免插件更新失效:不要直接修改插件的核心文件,否则插件更新后你的改动会丢失。上面的方案都是用钩子实现,属于“无侵入式”修改。
  • 权限控制:如果你的网站有多个编辑用户,记得限制只有管理员角色能修改商品副标题,避免恶意用户插入不安全的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:03:22