Вы можете использовать инспектор браузера, таким образом:

ужно отключить определенный способ доставки, если пользователь выбрал оплату «Оплата наложенным платежом». Проблема в том, что следующий код работает, только если я каждый раз сбрасываю переходные процессы WooCommerce и обновляю их. Это не работает при выборе пользователя туда-сюда.

add_filter( 'woocommerce_package_rates', 'alter_shipping_methods', 100 );
function alter_shipping_methods( $rates ) {

    $chosen_gateway = WC()->session->chosen_payment_method;

    // If payment is Cash on delivery remove specific shipping 
    if($chosen_gateway == 'cod') {

        foreach ( $rates as $rate_id => $rate ) {
           if ( $rate->label === 'Hrvatska pošta' ) {
              unset( $rates[ $rate_id ] );
            }
       }

    }

    return $rates;

}

У меня есть этот код, который должен срабатывать, и я вижу вывод в консоли, когда я нажимаю вокруг параметров.

jQuery(document.body).on('change', 'input[name="payment_method"]', function() {
    console.log('Payment method changed');
    jQuery('body').trigger('update_checkout');
});

Я пытался с этим, это не работает

function action_woocommerce_checkout_update_order_review($array, $int) {
    WC()->cart->calculate_shipping();
    return;
}
add_action('woocommerce_checkout_update_order_review', 'action_woocommerce_checkout_update_order_review', 10, 2);

И я также попытался пользовательский вызов AJAX, который вызывает функцию PHP и внутри этого фильтра, безрезультатно

add_filter( 'woocommerce_package_rates', 'alter_shipping_methods', 100 );

Что я должен попробовать дальше?

Ответы на вопрос(1)

Ваш ответ на вопрос