Ocultar otros métodos de envío si hay envío gratuito en WooCommerce

¿No te parece una tontería en la mayoría de las ocasiones que, estando disponible el envío gratuito, aparezcan otros métodos de envío al finalizar la compra tus clientes?

Yo me lo he encontrado en muchas tiendas online, y solo se me ocurre una situación en la que es conveniente que aparezcan otros métodos de envío si existe el envío gratuito: cuando se ofrece entrega urgente o prioritaria.

Sino no tiene sentido en absoluto.

Y no tiene sentido porque se me queda cara de gili, o de que me toman por gili, especialmente si el método que aparece seleccionado por defecto (que será el que esté colocado el primero en la lista de métodos de la zona de envío) es el que tiene coste.

Lo que me da por pensar es que el dueño de la tienda me quiere engañar y cobrarme por algo que podría tener gratis ¿no te ha pasado?

Me refiero a esto…

¿No será mejor esto?

¿Cómo lo consigo?

Fácil. Simplemente añade el siguiente código a tu plugin de personalizaciones, o sino al archivo functions.php del tema hijo:

/**
 * Oculta los costes de envío cuando haya envío gratuito.
 *
 * @param array $rates Array de tarifas del paquete.
 * @return array
 */
function my_hide_shipping_when_free_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

Guardas los cambios y ya está. Una posibilidad menos de cabrear a tus clientes, y de paso aumentar tus ventas al reducir otro de los factores de la tasa de abandono de carrito, al mejorar tu funnel de ventas.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(4 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

5 comentarios en “Ocultar otros métodos de envío si hay envío gratuito en WooCommerce”

  1. Jesus Gonzalez

    Hola Fernando …. sale un error 500

    Fatal error: Cannot redeclare my_hide_shipping_when_free_is_available() ….

      1. Jesus Gonzalez

        Después de unos intentos mas logre hacerlo funcionar pero no con ese código sino con el de la versión para 2.5 …. aunque tengo 3.1.2 en el sitio en cuestión.
        Cuando actualice a woo 3.2.1 probare otra vez, pero modifique algunas cosas directamente en el plugin y le tocara mas adelante.

        Este es el otro código …

        /**
        * woocommerce_package_rates is a 2.1+ hook
        */
        add_filter( ‘woocommerce_package_rates’, ‘hide_shipping_when_free_is_available’, 10, 2 );

        /**
        * Hide shipping rates when free shipping is available
        *
        * @param array $rates Array of rates found for the package
        * @param array $package The package array/object being shipped
        * @return array of modified rates
        */
        function hide_shipping_when_free_is_available( $rates, $package ) {

        // Only modify rates if free_shipping is present
        if ( isset( $rates[‘free_shipping’] ) ) {

        // To unset a single rate/method, do the following. This example unsets flat_rate shipping
        unset( $rates[‘flat_rate’] );

        // To unset all methods except for free_shipping, do the following
        $free_shipping = $rates[‘free_shipping’];
        $rates = array();
        $rates[‘free_shipping’] = $free_shipping;
        }

        return $rates;
        }

  2. Augusto de doninfo

    Hola Fernando,
    Funciona bien en la versión 3.1.2, puede que Jesús haya tenido algún conflicto con el tema que usa. Lo que si quisiera pedirte si puedes añadir una variante que deje visible permanentemente la recogida en el local. Muchas gracias por tu aporte.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido