Tengo un artículo en particular que no quiero enviar al extranjero. Todo lo demás está bien. Ya creé una clase de envío para él y cuando se agrega al carrito, no tiene ningún envío agregado y el botón no permite que el cliente pague. Entonces, todo esto está listo para usar en woocommerce. El problema es que cuando alguien en el extranjero quiere comprar varios artículos y uno de ellos resulta ser el que no envío al extranjero. ¡Todavía lo agrega al total del carrito aunque dice que no se enviará! Ver captura de pantalla
Encontré el fragmento de código a continuación que creo que es un poco el concepto de lo que necesito, pero este elimina un método de envío. No soy desarrollador de PHP ni desarrollador de WordPress Codex. Soy desarrollador/diseñador front-end. Por lo tanto, sea amable, lol. Sé que no quiero cargar mi sitio con complementos para algo tan simple.
En pocas palabras, solo necesito el carrito para eliminar cualquier artículo sin un método de envío del total. Entonces, en mi ejemplo, diría $59 en total ($55 + $4 de envío). El artículo de $45 se elimina del total por no poder enviarse
add_filter( 'woocommerce_package_rates', 'bbloomer_hide_free_shipping_for_shipping_class', 9999, 2 );
function bbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {
$shipping_class_target = 15; // shipping class ID (to find it, see screenshot below)
$in_cart = false;
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) {
$in_cart = true;
break;
}
}
if ( $in_cart ) {
unset( $rates['free_shipping:8'] ); // shipping method with ID (to find it, see screenshot below)
}
return $rates;
}
.