Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

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:

________________________________________________
La entrada Varios métodos de envío según el producto al finalizar compra la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.
________________________________________________

Enregistrer un commentaire

0 Commentaires