如何在WooCommerce中为WooCommerce Subscriptions订阅按钮添加价格
WooCommerce订阅产品订阅按钮显示价格与周期方案
你原有代码未适配WooCommerce Subscriptions插件的专属产品类型,也未读取订阅周期参数,调整后的完整可用代码如下:
/** * @snippet 加购/订阅按钮追加价格与订阅周期 * @compatible WooCommerce 5.8及以上,WooCommerce Subscriptions 3.0及以上 */ add_filter('woocommerce_product_add_to_cart_text', 'custom_add_to_cart_price', 20, 2); // 商店页、归档页生效 add_filter('woocommerce_product_single_add_to_cart_text', 'custom_add_to_cart_price', 20, 2); // 商品详情页生效 function custom_add_to_cart_price($button_text, $product) { // 可变产品、可变订阅产品逻辑 if ($product->is_type(['variable', 'variable-subscription'])) { // 商店、归档页展示逻辑 if (!is_product()) { $product_price = wc_price(wc_get_price_to_display($product, array('price' => $product->get_variation_price()))); $price_text = strip_tags($product_price); // 可变订阅产品追加周期标识 if ($product->is_type('variable-subscription')) { return $button_text . ' - 起价 ' . $price_text . '/' . $product->get_billing_period(); } return $button_text . ' - 起价 ' . $price_text; } // 详情页保留原有逻辑 else { return $button_text; } } // 简单产品、简单订阅产品逻辑 else { $product_price = wc_price(wc_get_price_to_display($product)); $price_text = strip_tags($product_price); // 订阅产品拼接订阅周期 if (in_array($product->get_type(), ['subscription', 'simple-subscription'])) { $billing_interval = $product->get_billing_interval(); $billing_period = $product->get_billing_period(); // 自动生成「每2个月」这类周期描述 $period_text = $billing_interval > 1 ? "每{$billing_interval}个{$billing_period}" : "每{$billing_period}"; // 如需调整为“Subscribe - $140”格式,可注释下行、启用下下行代码 return "{$period_text}订阅,费用为{$price_text}"; // return $button_text . ' - ' . $price_text; } // 普通简单产品保留原有逻辑 return $button_text . ' – ' . $price_text; } }
代码调整说明:
- 新增了对订阅产品专属类型的适配,兼容简单订阅、可变订阅两类订阅商品
- 自动读取后台设置的订阅间隔、订阅周期参数,可直接生成你需要的按钮文本格式,也可根据注释提示调整展示样式
- 完全保留原有普通商品的按钮逻辑,不会影响旧有功能的正常使用
内容的提问来源于stack exchange,提问作者Isak La Fleur
相关产品推荐
相关产品推荐

