更改 WooCommerce 订阅中的整个产品字符串

Change the entire product string in WooCommerce Subscripitons

我想在 WooCommerce 订阅中更改价格字符串的文本和顺序。现在它说:

“每月 1 日 35.00 美元,为期 11 个月,并收取 35.00 美元的注册费。”

我想让它说:

“第一个盒子 35.00 美元,然后每月 1 号 35.00 美元,持续 11 个月。”

我找到了可以用来将 "sign-up fee" 更改为 "for the first box" 的代码:

 /* WooCommerce Subscriptions Price String */

 function wc_subscriptions_custom_price_string( $pricestring ) {
    $newprice = str_replace( 'sign-up fee', 'for the first box', $pricestring );
    return $newprice;
}
add_filter( 'woocommerce_subscriptions_product_price_string', 'wc_subscriptions_custom_price_string' );
add_filter( 'woocommerce_subscription_price_string', 'wc_subscriptions_custom_price_string' );

现在显示 “每月 1 日 35.00 美元,连续 11 个月,第一个盒子 35.00 美元。”

如何更改顺序?

通过将原始字符串分解为数组来简单地重新排序字符串:

function wc_subscriptions_custom_price_string( $pricestring ) {
   $replace_price = str_replace( 'sign-up fee', 'for the first box', $pricestring );
   $aPrice = explode(" and a ", $replace_price);
   $newprice = $aPrice[1] . " and then " . $aPrice[0]; 
   $finalprice = str_replace(" on "," +shipping on ", $newprice);
   return finalprice;
}
add_filter( 'woocommerce_subscriptions_product_price_string', 'wc_subscriptions_custom_price_string' );
add_filter( 'woocommerce_subscription_price_string', 'wc_subscriptions_custom_price_string' );

参见:explode()

或者如果你想变漂亮:

$newprice = implode(" and then ", array_reverse($aPrice));