WooCommerce. Como desactivar diferentes opciones de envío según país de destino

El siguiente snipet que muestro a continuación te permite desactivar varios metodos de envió segun el país. Este se debe de colocar en el archivo functions.php del tema, o bién mejor aún en un gestor de snipets, a mi personalmente me gusta code snipet.

La configuración es añadiendo valores al array $country_list, se debe especificar el codigo de país ISO de 2 letras, y los metodos de envio que quieras desactivar de los que estén disponibles.


add_filter('woocommerce_package_rates', 'wf_remove_shipping_options_for_particular_country', 10, 2);


function wf_remove_shipping_options_for_particular_country($available_shipping_methods, $package){
global $woocommerce;

//Configura este array con la lista de paises y los diferentes metodos de envío a ocultar.
$country_list = array(
‘CA’ => array(‘wf_fedex_woocommerce_shipping’,’free_shipping’),
);

$customer_country = $woocommerce->customer->get_shipping_country();
if ( in_array( $customer_country , array_keys($country_list) ) ) {
if( !empty( $country_list[$customer_country] ) ){
foreach ($country_list[$customer_country] as $shipping_methods) {
foreach ($available_shipping_methods as $shipping_method => $value) {
if( strpos( $shipping_method, $shipping_methods ) !== false ) {
unset($available_shipping_methods[$shipping_method]);
}
}
}
}
}

return $available_shipping_methods;
}

Cookie policy
We use our own and third party cookies to allow us to understand how the site is used and to support our marketing campaigns.