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

WooCommerce订阅价格字符串重复及自定义需求技术问询

问题:YayCurrency+WooCommerce订阅价格字符串冗余重复

我开发的网站用YayCurrency插件支持USD和CAD支付,搭配WooCommerce Subscriptions后,订阅价格显示成了类似“立即支付$XX,且每月1日支付$XX”的冗余格式。目前已经用CSS在部分区域隐藏了重复内容,但想通过代码彻底修改,让价格只显示**对应货币价格 + “每月”**的简洁格式。

尝试过的代码(效果不符合预期)

  • 代码1:完全移除周期提示,不符合需求
add_filter( 'woocommerce_subscriptions_product_price_string_inclusions', 'wpd_override_subscription_price_string', 10, 2 );
function wpd_override_subscription_price_string( $include, $product ) {
    $include['subscription_period'] = false;
    return $include;
}

这段代码关闭了周期相关内容的显示,但我需要保留“每月”的提示,不是彻底删掉。

  • 代码2:替换日期为“每月”,但冗余部分仍存在
add_filter( 'woocommerce_subscriptions_product_price_string', 'wpd_change_subscription_product_string', 10, 3 );
function wpd_change_subscription_product_string( $subscription_string, $product, $include ) {
    if ( $include['subscription_period'] ){
        $current_string = 'on the 1st of each month';
        $new_string = 'monthly';
        $subscription_string = str_replace($current_string, $new_string, $subscription_string);
    }
    return $subscription_string;
}

这段代码把“每月1日”换成了“每月”,但最终还是显示“$XX now, and $XX monthly”,冗余的“now, and ...”部分没去掉。

解决方案代码

基础版本(价格一致时)

直接构造简洁的价格字符串,保留对应货币价格+“每月”:

add_filter( 'woocommerce_subscriptions_product_price_string', 'custom_simplify_subscription_price_string', 20, 3 );
function custom_simplify_subscription_price_string( $subscription_string, $product, $include ) {
    // 只处理订阅类型产品
    if ( ! $product->is_type( 'subscription' ) ) {
        return $subscription_string;
    }

    // 获取当前货币下的订阅价格(YayCurrency的转换会自动生效)
    $price = wc_price( $product->get_price() );
    
    // 拼接成简洁格式
    $subscription_string = sprintf( '%s 每月', $price );

    return $subscription_string;
}

把这段代码加到主题的functions.php文件里,或者用自定义代码插件(比如Code Snippets)。优先级设为20是为了确保覆盖原有插件的逻辑。

进阶版本(支持首次付款优惠)

如果你的订阅有首次付款和后续付款价格不同的情况,用这个版本区分显示:

add_filter( 'woocommerce_subscriptions_product_price_string', 'custom_simplify_subscription_price_string', 20, 3 );
function custom_simplify_subscription_price_string( $subscription_string, $product, $include ) {
    if ( ! $product->is_type( 'subscription' ) ) {
        return $subscription_string;
    }

    // 获取首次付款价格和常规订阅价格(已适配YayCurrency货币转换)
    $initial_price = wc_price( $product->get_initial_price() );
    $regular_price = wc_price( $product->get_price() );

    // 价格不同时显示首次+后续,价格一致时只显示统一价格+每月
    if ( $initial_price !== $regular_price ) {
        $subscription_string = sprintf( '首次 %s,之后 %s 每月', $initial_price, $regular_price );
    } else {
        $subscription_string = sprintf( '%s 每月', $regular_price );
    }

    return $subscription_string;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:52:41