Cómo ocultar los métodos de envío de WooCommerce para ciertas condiciones
Publicado: 2020-06-15El método de envío es un servicio y un cargo que un cliente ve al finalizar la compra al comprar cualquier artículo. Será una opción esencial para una tienda de comercio electrónico para una experiencia de entrega fluida .
Como solución de comercio electrónico, WooCommerce también proporciona métodos de envío como envío gratuito , tarifa plana y recogida local , que se pueden configurar para varias zonas de envío según las ubicaciones. Por ejemplo, la opción de envío gratuito está disponible solo para un cierto rango de códigos postales que están cerca de la ubicación de la tienda y la opción de tarifa plana está disponible para la otra parte de las zonas de entrega.

Las opciones de envío basadas en la ubicación se pueden lograr fácilmente con el complemento, pero para ciertas condiciones en las que la ubicación no juega un papel vital, se vuelve muy difícil para los propietarios de las tiendas lograrlo. Las condiciones podrían ser:
- Ciertos métodos de envío, como el envío gratuito, no deberían estar disponibles si el peso del pedido supera una cierta cantidad de libras o kg.
- La disponibilidad de algunos métodos de envío también se basa en el número de cantidades o el precio de todo el pedido. Por ejemplo, si el total del pedido es superior a $ 250, solo debería estar disponible el método de envío gratuito y no debería estar disponible ningún método de envío pagado.
Puede haber más condiciones para las que los métodos de envío deban mostrarse u ocultarse durante el pago, pero en esta publicación explicaremos lo anterior. 2. Para lograr esto para su tienda WooCommerce, puede agregar un fragmento de código o usar cualquiera de las tarifas de envío. complementos disponibles.
Usar un fragmento de código
Tomemos un ejemplo de la condición 1 que se menciona anteriormente, donde el envío gratuito no debería estar disponible si el peso del pedido es superior a 5 kg. Puede lograr esto agregando el siguiente código en el archivo functions.php del tema actualmente activo.
Nota: estos cambios se pueden sobrescribir con una actualización del tema actual, por lo que se recomienda crear un tema secundario y agregar los fragmentos de código necesarios en el archivo functions.php del tema secundario. O puede usar el complemento Code Snippets para agregar fragmentos personalizados.
/** * Ocultar envío gratis cuando el peso del pedido es superior a 10kgs. * * @param array $tarifas Matriz de tarifas encontradas para el paquete. * Matriz @return */ función ts_hide_free_shipping_for_order_weight ($tarifas, $paquete) { $order_weight = WC()->cart->get_cart_contents_weight(); if ( $order_weight > 5 ) { foreach( $tarifas as $tarifa_id => $tarifa_val ) { if ( 'envío_gratis' === $rate_val->get_method_id() ) { unset( $tarifas[ $tarifa_id ] ); } } } devolver $tasas; } add_filter('woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2);
Aquí se utiliza el filtro woocommerce_package_rates para modificar las tarifas calculadas en el carrito. Contiene todas las tarifas de envío que estarán disponibles una vez que se agregue el producto al carrito. Por lo tanto, debemos desactivar el método de envío requerido, que en nuestro caso será Envío gratuito desde la matriz devuelta por este filtro si el peso del pedido es superior a 5 kg.
Página del producto:

Página del carrito con métodos de envío:

Otro ejemplo de ocultar los métodos de envío en WooCommerce Cart sería permitir solo el envío gratuito durante el proceso de pago cuando el total del pedido supere los $250. Esto se puede lograr agregando el siguiente código en el archivo functions.php.

/** * Oculte las tarifas de envío cuando el total del pedido supere los $250. * * @param array $tarifas Matriz de tarifas encontradas para el paquete. * Matriz @return */ función ts_hide_shipping_for_order_total ($ tarifas) { $gratis = matriz(); $order_total = WC()->carrito->get_subtotal(); if( $total_pedido > 250 ) { foreach ( $tarifas as $tarifa_id => $tarifa ) { if ( 'envio_gratis' === $tarifa->get_method_id() ) { $gratis[ $tarifa_id ] = $tarifa; } } } devolver ! vacío ($ gratis)? $gratis : $tarifas; } add_filter('woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100);
Aquí, cuando el total del pedido es superior a $ 250, el filtro devuelve una matriz con solo métodos de envío gratuitos; de lo contrario, se devuelven todas las tarifas de envío.

En los ejemplos anteriores, hemos tomado la referencia del método de envío gratuito, por lo que la identificación del método utilizada es free_shipping. Para modificar otros métodos de envío, los ID de método son:
Recogida local: local_pickup
Tarifa plana: tarifa_plana
La función get_method_id() obtiene la identificación del método solo para los 3 métodos para todas las zonas de envío y no para un método individual de una sola zona de envío, por lo que ocultará todas las tarifas planas, recolección local o métodos de envío gratis disponibles durante el pago. Pero si desea ocultar un método de envío específico, debe usar la combinación de ID de método de envío e ID de instancia.
Por ejemplo, 'tarifa_plana:3' donde 3 es la identificación de instancia única almacenada para cada método de envío para una zona en la base de datos. Puede encontrar la identificación de instancia del método de envío haciendo clic derecho en el método de envío e inspeccionar el elemento en la herramienta de desarrollo en su navegador.
Uso de diferentes extensiones de WooCommerce para métodos de envío
Hay múltiples extensiones pagas o gratuitas disponibles para configurar métodos de envío para diferentes condiciones. Algunos de los plugins que más se utilizan son:
Complementos pagados:
- Table Rate Shipping by WooCommerce : este complemento amplía las opciones de envío predeterminadas de WooCommerce y le brinda opciones de envío altamente personalizables.
- Complemento de envío de tarifa plana avanzada para WooCommerce : este complemento lo ayudará a configurar las tarifas de envío en su tienda según las reglas de envío avanzadas.
- Complemento de envío avanzado de WooCommerce de Jeroen sormani : este complemento le permite habilitar los métodos de envío durante el proceso de pago según las reglas establecidas. Las reglas se pueden establecer para diferentes detalles del carrito, detalles del producto o diferentes detalles del usuario .
- Envío flexible Pro para WooCommerce de WP Desk : este complemento le permite habilitar el método de envío en función del artículo en particular, la línea del carrito, el precio o las reglas de peso .
Complementos gratuitos:
Algunos de los complementos anteriores también tienen una versión gratuita con funciones limitadas. Están:
- Envío gratuito avanzado de WooCommerce de Jeroen Sormani: esta es una versión gratuita del complemento de envío avanzado de WooCommerce. La única diferencia con ambos complementos es que este complemento solo permite el método de envío gratuito para las reglas establecidas y el complemento pago permite todos los métodos de envío.
- Envío flexible para WooCommerce de WP Desk : esta es una versión gratuita del complemento Flexible Shipping Pro para WooCommerce. Permite configurar métodos de envío solo por precio y peso.
Para obtener una explicación detallada de los complementos mencionados anteriormente, puede consultar esta publicación.
Conclusión
Como hemos visto en esta publicación, las opciones de envío anticipado se pueden lograr simplemente agregando un fragmento de código en su sitio web o usando varios complementos disponibles. Por lo tanto, puede probar el fragmento de código proporcionado o experimentar con cualquiera de los complementos y hacernos saber si esto es beneficioso para su tienda WooCommerce.