Скрыть способ оплаты наложенным платежом на основе класса доставки в корзине WooCommerce - PullRequest
1 голос
/ 06 мая 2020

Как Salam o Alikum, я пытаюсь скрыть ca sh при оплате доставки, если товар в корзине относится к классу доставки NOCOD. Я создал класс доставки с идентификатором 723, я пытался получить помощь отовсюду в Интернете, но не мог понять, где я делаю неправильно.

Основываясь на веб-серфинге, я написал код и добавил в тему 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;
    }

Но он не работает и не скрывается Ca sh при доставке на странице оформления заказа . Мы будем благодарны за любую помощь, предложение или совет, спасибо. :)

1 Ответ

1 голос
/ 06 мая 2020
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;
}

Протестировано в соответствии с классом доставки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...