在 WooCommerce 中隐藏运输和付款方式

问题描述 投票:0回答:2

我正在构建 WooCommerce 电子商店,我需要通过执行以下操作来调整我的结帐页面:

  1. 如果订单总额> 100欧元,则隐藏某种运输方式(仅一种)。

  2. 如果选择本地取货,则隐藏货到付款付款方式。

有人知道该怎么做吗?我有代码片段插件,因此我可以轻松添加任何自定义代码。

php wordpress woocommerce payment checkout
2个回答
3
投票

要根据购物车总数隐藏特定的运输方式,您可以使用以下代码片段。您需要在代码中更新您的送货方式名称。

根据购物车总数禁用运送方式

将此代码段添加到主题的

functions.php
文件或自定义插件文件中。

add_filter( 'woocommerce_package_rates', 'shipping_based_on_price', 10, 2 );

function shipping_based_on_price( $rates, $package ) {

    $total = WC()->cart->cart_contents_total;
    //echo $total;
    if ( $total > 100 ) {

        unset( $rates['local_delivery'] ); // Unset your shipping method

    }
    return $rates;

}

禁用特定运输方式的支付网关

使用下面的代码片段。根据您的付款方式和运输方式更新代码。

add_filter( 'woocommerce_available_payment_gateways', 'x34fg_gateway_disable_shipping' );

function x34fg_gateway_disable_shipping( $available_gateways ) {

    global $woocommerce;

    if ( !is_admin() ) {

        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );

        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
            unset( $available_gateways['cod'] );
        }

    }

return $available_gateways;

}

1
投票
  1. 有许多插件可以为您执行此操作,请看一下这个 WooCommerce 有条件运输和付款
  2. 您需要加入“woocommerce_ payment_gateways”操作

大致如下:

function alter_payment_gateways( $gateways ){

    $chosen_rates = ( isset( WC()->session ) ) ? WC()->session->get( 'chosen_shipping_methods' ) : array();

    if( in_array( 'local-pickup:6', $chosen_rates ) ) {
        $array_diff = array('cod');
        $list = array_diff( $list, $array_diff );
    }

    return $list;
}

add_action('woocommerce_payment_gateways', 'alter_payment_gateways', 50, 1);

第 4 行“local-pickup”末尾的数字将取决于您的 woocommerce 设置。您可以通过以下方式找到需要放入此处的字符串:将商品添加到购物篮中,转到结帐处,右键单击交付方式中的“本地取货”选项,然后查看 value 属性。

© www.soinside.com 2019 - 2024. All rights reserved.