📅  最后修改于: 2023-12-03 15:09:50.605000             🧑  作者: Mango
在 Woocommerce 支付流程中,如果订单总金额为 0,则没有必要再提供支付方式给用户选择。我们可以通过添加一些代码来实现自动删除所有支付方式。
在 WordPress 主题的 functions.php
文件中添加以下代码:
add_filter( 'woocommerce_available_payment_gateways', 'disable_payment_gateway_when_free_order', 20, 1 );
function disable_payment_gateway_when_free_order( $available_gateways ){
global $woocommerce;
// 获取订单总额
$total = floatval( $woocommerce->cart->total );
// 如果订单总额为 0,则删除所有支付方式
if( $total == 0 ){
unset( $available_gateways['paypal'] ); // 这里仅以 PayPal 为例
unset( $available_gateways['stripe'] ); // 这里仅以 Stripe 为例
}
return $available_gateways;
}
在代码中,我们通过 woocommerce_available_payment_gateways
过滤器来修改可用的支付方式,并通过全局变量 $woocommerce
获取当前购物车的总金额。如果总金额为 0,则使用 unset()
函数删除所有支付方式,这样用户就无法选择支付方式了。
# 当 total 为 0 时,Woocommerce 删除付款方式
在 Woocommerce 支付流程中,如果订单总金额为 0,则没有必要再提供支付方式给用户选择。我们可以通过添加一些代码来实现自动删除所有支付方式。
## 实现方法
在 WordPress 主题的 `functions.php` 文件中添加以下代码:
``` php
add_filter( 'woocommerce_available_payment_gateways', 'disable_payment_gateway_when_free_order', 20, 1 );
function disable_payment_gateway_when_free_order( $available_gateways ){
global $woocommerce;
// 获取订单总额
$total = floatval( $woocommerce->cart->total );
// 如果订单总额为 0,则删除所有支付方式
if( $total == 0 ){
unset( $available_gateways['paypal'] ); // 这里仅以 PayPal 为例
unset( $available_gateways['stripe'] ); // 这里仅以 Stripe 为例
}
return $available_gateways;
}
在代码中,我们通过 woocommerce_available_payment_gateways
过滤器来修改可用的支付方式,并通过全局变量 $woocommerce
获取当前购物车的总金额。如果总金额为 0,则使用 unset()
函数删除所有支付方式,这样用户就无法选择支付方式了。