Hay un millón de complementos que le permiten aprovechar al máximo WooCommerce «paquetes de carro» – Esta es una breve forma de decir que tiene la oportunidad de asignar elementos de carrito a múltiples»paquetes» para que el cliente pueda elegir diferentes métodos de envío para cada paquete.
Por ejemplo, imagine que vende productos que solo están disponibles para «recoger en la tienda“, Y otros que son envables. Al dividir el carrito en 2 paquetes, el cliente puede colocar ambos tipos de productos en el mismo carrito, pero podrá elegir «Recogida local«Solo para el paquete 1, mientras que para el paquete 2 seleccionarán una de las tarifas de entrega disponibles.
Dividir el carrito en múltiples paquetes es tan fácil como recorrer los artículos del carrito y asignarlos a su propia matriz de paquetes basada en la clase de envío. ¡Disfrutar!
1. Asigne una clase de envío a cada producto
Por supuesto, necesitamos encontrar «algo» para agrupar productos juntos. Para eso, usaremos clases de envío. En primer lugar, cree algunas clases aquí:
Luego, asigne la clase de envío a cada producto que desea estar en el mismo paquete:
2: Php Fnippet: coloque los artículos en diferentes paquetes basados en la clase de envío @ WooCommerce Cart
/** * @snippet Split WooCommerce Cart Into Multiple Packages * @tutorial Get CustomizeWoo.com FREE * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 8 * @community Join https://businessbloomer.com/club/ */ add_filter( 'woocommerce_cart_shipping_packages', 'bbloomer_split_shipping_packages_by_class' ); function bbloomer_split_shipping_packages_by_class( $packages ) { $destination = $packages[0]['destination']; $user = $packages[0]['user']; $applied_coupons = $packages[0]['applied_coupons']; $packages = array(); foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $key = $cart_item['data']->get_shipping_class_id(); $packages[$key]['contents'][$cart_item_key] = $cart_item; } foreach ( $packages as $index => $package ) { $total = array_sum( wp_list_pluck( $packages[$index]['contents'], 'line_total' ) ); $packages[$index]['destination'] = $destination; $packages[$index]['user'] = $user; $packages[$index]['applied_coupons'] = $applied_coupons; $packages[$index]['contents_cost'] = $total; } return $packages; }