Показать скрытые способы оплаты на основе выбранного способа доставки в Woocommerce - PullRequest
1 голос
/ 25 марта 2019

Я хотел бы скрыть один способ оплаты и включить другой, когда я выбираю указанный «Способ доставки» в гибкой форме плагина доставки wpdesk.

Я уже пробовал этот код:

add_filter( 'woocommerce_available_payment_gateways', 'gateway_disable_shipping_326' );
function gateway_disable_shipping_326( $available_gateways ) {
    global $woocommerce;

    if ( !is_admin() ) {
        $chosen_methods  = WC()->session->get( 'chosen_shipping_methods' );
        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['payment_method_cod'] ) && 0 === strpos( $chosen_shipping, 'flat_rate:6' ) ) {
            unset( $available_gateways['payment_method_cod'] );
        }
    }
    return $available_gateways; 
}

и этот

function my_custom_available_payment_gateways( $gateways ) {
    $chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
    if ( in_array( 'flat_rate:6', $chosen_shipping_rates ) ) :
        unset( $gateways['payment_method_cod'] );
        endif;
    if ( in_array( 'flat_rate:8', $chosen_shipping_rates ) ) :
        unset( $gateways['payment_method_przelewy24'] );
    endif;
    return $gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );

Ссылка на мой сайт: [www.dajati.pl] [1]

1 Ответ

0 голосов
/ 26 марта 2019

Следующий пример кода включает / отключает платежные шлюзы на основе выбранного способа доставки.

В этом примере у нас есть 3 способа доставки и 3 платежных шлюза.Каждый выбранный способ доставки включает только один отдельный платежный шлюз.

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method' );
function payment_gateways_based_on_chosen_shipping_method( $gateways ) {
    // Get chosen shipping methods
    $chosen_shipping_methods = (array) WC()->session->get( 'chosen_shipping_methods' );

    if ( in_array( 'flat_rate:12', $chosen_shipping_methods ) )
    {
        unset( $gateways['bacs'] );
        unset( $gateways['cod'] );
    }
    elseif ( in_array( 'flat_rate:14', $chosen_shipping_methods ) )
    {
        unset( $gateways['bacs'] );
        unset( $gateways['paypal'] );
    }
    elseif ( in_array( 'free_shipping:10', $chosen_shipping_methods ) )
    {
        unset( $gateways['cod'] );
        unset( $gateways['paypal'] );
    }

    return $gateways;
}

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

Чтобы иметь возможность получить правильный идентификатор способа доставки , вы можете использовать инспектор браузера, таким образом:

enter image description here

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