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

如何修改WooCommerce订阅模块的价格显示文本?

解决WooCommerce Subscriptions价格显示简化问题

我之前帮客户处理过完全一样的WooCommerce订阅价格显示需求,刚好能给你几个可行的方案,先说说你提到的「部分插件无法修改其余文本」的推测原因:

  • WooCommerce Subscriptions的完整价格字符串是通过专属过滤器钩子生成的,比如woocommerce_subscriptions_product_price_string,很多第三方插件只针对价格数值的单个钩子做修改,没有覆盖到这个完整价格文本的过滤逻辑,所以没法移除多余的描述性文字。

最靠谱的解决方案:自定义钩子函数

直接通过代码拦截插件生成的价格字符串,替换成你需要的「$20」样式。你可以选择以下两种方式添加代码:

方法1:子主题functions.php文件

打开你当前主题的子主题文件夹,找到functions.php,在文件末尾添加以下代码:

add_filter('woocommerce_subscriptions_product_price_string', 'custom_simplify_subscription_price', 10, 3);
function custom_simplify_subscription_price($price_string, $product, $args) {
    // 获取订阅产品的注册费金额
    $signup_fee = $product->get_sign_up_fee();
    // 用WooCommerce内置函数格式化价格为你需要的样式
    return wc_price($signup_fee);
}

方法2:使用Code Snippets插件(更安全)

如果你不想修改主题文件,安装并激活「Code Snippets」插件,新建一个代码片段,粘贴上面的代码并启用即可。


备用方案:针对产品价格HTML的钩子

如果上面的钩子没生效(可能是插件版本差异),可以试试这个针对产品价格HTML的过滤钩子:

add_filter('woocommerce_get_price_html', 'custom_subscription_price_html_display', 10, 2);
function custom_subscription_price_html_display($price, $product) {
    // 只对订阅类型产品生效,避免影响普通产品
    if (!function_exists('wcs_is_subscription') || !wcs_is_subscription($product)) {
        return $price;
    }
    
    $signup_fee = $product->get_sign_up_fee();
    return wc_price($signup_fee);
}

注意事项

  • 这两段代码都会自动识别你的WooCommerce货币设置,所以如果你的货币不是美元,也会正确显示对应符号。
  • 如果你后续调整了注册费金额,价格显示会自动同步,不用手动修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:02:54