隐藏基于WooCommerce购物车中运输类别的COD付款方式 [英] Hide COD payment method based on shipping class in WooCommerce cart

查看:73
本文介绍了隐藏基于WooCommerce购物车中运输类别的COD付款方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为Salam o Alikum,如果购物车中的产品属于NOCOD装运类别,我试图隐藏货到付款的付款方式.我创建了一个运输类别,其ID为723,我试图从网络上的任何地方获取帮助,但无法弄清楚我做错了什么地方.

As Salam o Alikum, I'm trying to hide cash on delivery payment method if the product in cart belongs to 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.

基于网上冲浪,我已经编写了代码并将其添加到主题functions.php中.

Based on web surfing, I have written code and added it to theme functions.php.

这是代码段.

    //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

这篇关于隐藏基于WooCommerce购物车中运输类别的COD付款方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆