Отключите определенные способы оплаты для определенных зон доставки, когда промежуточная сумма корзины достигает определенной суммы в Woocommerce - PullRequest
0 голосов
/ 11 сентября 2018

В Woocommerce я пытаюсь убрать способ оплаты «Оплата наложенным платежом», когда промежуточный итог корзины составляет до 250 долларов США для определенных названий зон доставки (Зона 1, Зона 4 и Зона 7).

Все остальные зоны не должны иметь этого ограничения.

Вот мой неполный код, основанный на этой теме :

add_filter( 'woocommerce_available_payment_gateways', 'change_payment_gateway', 20, 1);
function change_payment_gateway( $gateways ){

    $zone = $shipping_zone->get_zone_name();

    if( WC()->cart->subtotal > 250 ) && if($zone=='Zone 1','Zone 4','Zone 7'){

        unset( $gateways['cod'] );
    }
    return $gateways;
}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 11 сентября 2018

Следующее удалит платежный шлюз «Оплата наложенным платежом» для определенных зон доставки, и когда промежуточный итог корзины составляет до 250:

add_filter( 'woocommerce_available_payment_gateways', 'conditionally_remove_payment_methods', 20, 1);
function conditionally_remove_payment_methods( $gateways ){
    // HERE below your targeted zone names
    $targeted_zones_names = array('Zone 1','Zone 4','Zone 7');

    $chosen_methods    = WC()->session->get( 'chosen_shipping_methods' ); // The chosen shipping mehod
    $chosen_method     = explode(':', reset($chosen_methods) );
    $shipping_zone     = WC_Shipping_Zones::get_zone_by( 'instance_id', $chosen_method[1] );
    $current_zone_name = $shipping_zone->get_zone_name();

    if( WC()->cart->subtotal > 250 && in_array( $current_zone_name, $targeted_zones_names ) ){
        unset( $gateways['cod'] );
    }
    return $gateways;
}

Код входит в файл function.phpфайл вашей активной дочерней темы (или активной темы).Проверено и работает.

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