Deshabilite el método de envío específico si se elige el pago contra reembolso en Woocommerce
Necesito desactivar el método de envío específico si el usuario seleccionó el pago "Contra reembolso". El problema es que el siguiente código funciona solo si restablezco los transitorios de WooCommerce cada vez y actualizo. No funciona en la selección de usuarios de un lado a otro.
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;
}
Tengo este código que debería activarse y veo el resultado en la consola cuando hago clic en las opciones.
jQuery(document.body).on('change', 'input[name="payment_method"]', function() {
console.log('Payment method changed');
jQuery('body').trigger('update_checkout');
});
He intentado con esto, no funciona
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);
Y también probé una llamada AJAX personalizada que llama a una función PHP y dentro de este filtro, no hay resultado
add_filter( 'woocommerce_package_rates', 'alter_shipping_methods', 100 );
¿Qué debería probar a continuación?