Uno de los problemas con los que me he encontrado a la hora de realizar una tienda virtual con WooCommerce es la de configurar el envío gratuito ya que cuando se configura para que el envío le salga gratis al cliente para pedidos superiores a X cantidad aparece como tal en las opciones de envío. El problema es que también aparecen el resto de métodos de envío y claro, se selecciona el que está por defecto por lo que puede pasar inadvertido para el cliente y en consecuencia perder una venta asegurada.

Para poder configurar la opción de envío gratuito debemos ir a WooCommerce -> Ajustes -> Envío y seleccionarlo con la opción que queramos para que aparezca este nuevo “método de envío”. A continuación habilitarlo para que aparezca ya en nuestro sitio.

Como ya hemos dicho, esta opción funciona pero no deshabilita el resto de opciones de envío, algo que debería ser automático. Para ello vamos a ocultar el resto de métodos de envío cuando se cumpla la condición o condiciones de “envío gratuito” a través de unas líneas de código PhP que facilitan los propios miembros de WooCommerce.

Introduciremos el siguiente código en el archivo functions.php (o funciones del tema). Para ello vamos a Apariencia -> Editor y buscamos el archivo que hemos comentado.

//* DEVELOPEANDO.NET -> Ocultar resto de métodos de envío
add_filter( 'woocommerce_package_rates', 'mostrar_solo_gratis', 10, 2 );
function mostrar_solo_gratis( $rates, $package ) {
    global $woocommerce;   
    if ( isset( $rates[ 'free_shipping' ] ) ) {
        $free_shipping          = $rates[ 'free_shipping' ];
        $rates                  = array();
        $rates[ 'free_shipping' ] = $free_shipping;
    }
    return $rates;
}

Con esta función ya habremos resuelto nuestro problema de los métodos de envío. El problema es que este archivo functions.php se actualiza cada vez que actualicemos nuestro tema por lo que todas las líneas que se inserten aquí desaparecerán con cada actualización.

Lo recomendable será entonces trabajar con un “child theme” para que no perdamos todas las modificaciones manuales que hemos hecho en el editor o que almacenemos todos los cambios y cada vez que actualicemos, nos acordemos de copiarlo de nuevo en el editor de php de nuestro tema.