📌  相关文章
📜  当 totla 为 0 时,woocommerce 删除付款方式 - PHP (1)

📅  最后修改于: 2023-12-03 15:09:50.605000             🧑  作者: Mango

当 total 为 0 时,Woocommerce 删除付款方式

在 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() 函数删除所有支付方式,这样用户就无法选择支付方式了。