简体   繁体   English

在 WooCommerce 购物车中隐藏基于运费 class 的 COD 付款方式

[英]Hide COD payment method based on shipping class in WooCommerce cart

As Salam o Alikum, I'm trying to hide cash on delivery payment method if the product in cart belongs to NOCOD shipping class.作为 Salam o Alikum,如果购物车中的产品属于 NOCOD shipping class,我会尝试隐藏货到付款方式。 I have created a shipping class and its ID is 723, I tried to get help from everywhere on the web but unable to figure out that where I'm doing wrong.我创建了一个运输 class 并且它的 ID 是 723,我试图从 web 的任何地方获得帮助,但无法弄清楚我做错了什么。

Based on web surfing, I have written code and added it to theme functions.php.基于web冲浪,我已经编写了代码并添加到主题函数中。php。

Here is the code snippet.这是代码片段。

    //disabling COD if shipping class is NOCOD.

    add_filter('woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2);
    //fuction
    function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {

    $shipping_class_target_id = 723; // shipping class ID 
    $in_cart = false;

    // Not in backend (admin)
    if( is_admin() ) {
    return $available_gateways;
    }

    else{

    foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
    if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
    $in_cart = true;
    break;
      } 
     }
    }

    // Remove Cash on delivery (cod) payment gateway for products belongs to NOCOD shipping class
    if($in_cart){
    unset($available_gateways['cod']); 
    } 
    // unset 'cod'
    return $available_gateways;
    }

But it's not working and not hiding Cash on Delivery on the checkout page.但它不起作用,也没有在结帐页面上隐藏货到付款 Any help, suggestion or tip will be greatly appreciated, Thanks.任何帮助、建议或提示将不胜感激,谢谢。 :) :)

add_filter( 'woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2 );


function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {

    $shipping_class_target_id    = 21; // shipping class ID 
    $in_cart                     = false;

    // Not in backend (admin)
    if ( is_admin() ) {
        return $available_gateways;
    } else {

        foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
            if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
                unset( $available_gateways[ 'cod' ] );
                break;
            }
        }
    }

    return $available_gateways;
}

Tested ok with shipping class测试正常,发货 class

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Woocommerce,隐藏基于运输类的运输方式 - Woocommerce, hide shipping method based on shipping class 根据 Woocommerce 中选择的运输方式显示隐藏付款方式 - Show hide payment methods based on selected shipping method in Woocommerce 根据 WooCommerce 结帐中选择的选择字段选项隐藏 COD 付款 - Hide COD payment based on chosen select field options in WooCommerce checkout 根据选择的付款方式更改 Woocommerce 购物车商品税类 - Change Woocommerce cart items tax class based on chosen payment method 基于 WooCommerce 中选择的付款方式的运费折扣 - Shipping discount based on chosen payment method in WooCommerce WooCommerce:根据购物车中的数量更改运输类别 - WooCommerce: Change shipping class based on quantity in cart 根据 Woocommerce 3 中的运输类别过滤运输方法 - Filter Shipping method based on shipping class in Woocommerce 3 Woocommerce:根据购物车商品的运输类别计数更改运输类别 - Woocommerce: Change shipping class based on cart items shipping class count 根据 Woocommerce 中购物车中的运费 class 价格项目更改运费 class - Change shipping class based on shipping class price items in cart in Woocommerce 根据 Woocommerce 中运送 class 计数的购物车项目更改运送 class - Change shipping class based on cart items shipping class count in Woocommerce
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM