Oferta SiteGround Black Friday

Varios métodos de envío según el producto al finalizar compra

Si aún no te ha pasado pronto llegará el día en que necesites, o te pida un cliente, ofrecer varios métodos de envío, gratuitos y de pago al finalizar compra, según los productos añadidos al carrito.

Vamos a ello, son pocos pasos…

Crear clases de envío para cada método

En la administración de tu tienda online ve al menú WooCommerce → Ajustes → Envío → Clases de envío y añade las clases de envío que necesites, como en el siguiente ejemplo.

Apunta por ahí los slug de las nuevas clases de envío (los necesitaremos luego) y guarda las clases de envío.

Asigna las nuevas clases de envío

Ahora edita los productos con distintos costes de envío a los estándar que hayas configurado y asígnales la clase de envío creada que le corresponda a cada uno de los afectados y guarda los cambios en el editor.

Asigna importes a las nuevas clases de envío

Ahora que ya tenemos las nuevas clases de envío y productos a los que les afectarán, hay que asignarles un importe o tarifa a estas clases de envío.

Para ello ve a WooCommerce → Ajustes → Envío → Zonas de envío, haz clic en la zona de envío a la que añadiremos las tarifas y, a continuación, pulsa el botón de «Añadir método de envío».

Ponle un nombre al nuevo método de envío y, a continuación, edítalo para configurarlo del siguiente modo:

Lo más importante es lo siguiente:

  1. El tipo de cálculo debe ser «Por clase».
  2. Especifica un coste cero para la clase de envío gratuito, si es el caso.
  3. Especifica un coste para cada clase de envío adicional.

Guarda los cambios.

Separa los envíos según su coste

El siguiente paso es muy importante, porque querrás que se muestren separados los distintos costes de envío según el método de envío. Para conseguirlo hay que crear una función con algo de código personalizado, así:

/* Costes de envio por metodo */
add_filter( 'cw_woocommerce_package_cart', 'ayudawp_separar_costes_envio' );
function ayudawp_separar_costes_envio( $packages ) {
$bulk_products = array();
$packages = array();
$regular_products = array();
// Ordenar los productos por clase
foreach ( WC()->cart->get_cart() as $item ) {
if ( $item['data']->needs_shipping() ) {
if ( $item['data']->get_shipping_class() == 'gratuito' ) {
$bulk_products[] = $item;
} else {
$regular_products[] = $item;
}
}
}
if ( $bulk_products ) {
$packages[] = array(
'ship_via' => array( 'flat_rate' ),
'contents' => $bulk_products,
'contents_cost' => array_sum( wp_list_pluck( $bulk_products, 'line_total' ) ),
'applied_coupons' => WC()->cart->applied_coupons,
'destination' => array(
'country' => WC()->customer->get_shipping_country(),
'state' => WC()->customer->get_shipping_state(),
'postcode' => WC()->customer->get_shipping_postcode()
)
);
}
if ( $regular_products ) {
$packages[] = array(
'contents' => $regular_products,
'contents_cost' => array_sum( wp_list_pluck( $regular_products, 'line_total' ) ),
'applied_coupons' => WC()->cart->applied_coupons,
'destination' => array(
'country' => WC()->customer->get_shipping_country(),
'state' => WC()->customer->get_shipping_state(),
'postcode' => WC()->customer->get_shipping_postcode()
)
);
}
return $packages;
}

En el código anterior debes cambiar los slugs de los array de ejemplo por los que tú creaste, acuérdate que te dije que luego los necesitaríamos.

Guarda los cambios.

¿Dónde pongo este código?

Puedes añadir el código en varios sitios, elige tú mismo cómo hacerlo siguiendo esta sencilla guía…

Cómo y dónde pegar en WordPress códigos PHP, JS, CSS y funciones que encuentres por ahí

Resultado

Una vez hayas realizado los pasos anteriores ya puedes realizar pruebas para comprobar que se apliquen correctamente los costes de las clases de envío configuradas a los productos correspondientes, como en el siguiente ejemplo:

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 10

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

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

Sobre el autor

Deja un comentario

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

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba