En este momento estás viendo Añadir selector de cantidades al finalizar compra en WooCommerce

Añadir selector de cantidades al finalizar compra en WooCommerce



El selector de cantidades de producto suele estar solo disponible en la página del producto y en el carrito pero ¿y si quieres también ofrecer al cliente que cambie la cantidad de unidades en la página de pago?

Hay múltiples motivos por los que querrías añadir esta funcionalidad a tu tienda online, como por ejemplo si has creado una redirección para que los clientes no pasen por el carrito y vayan directamente al pago, o simplemente porque quieres ofrecer una total flexibilidad para añadir o quitar cantidades de los productos en cualquier momento, tú sabrás.

El caso es que es muy fácil, solo hay que añadir algo de código a tu plugin de personalizaciones como Code Snippets o al archivo functions.php del tema activo, así:

/* Selector de cantidades al finalizar compra en Woo */
// Ocultamos la cadena de las cantidades junto al nombre del producto
add_filter( ‘woocommerce_checkout_cart_item_quantity’, ‘__return_empty_string’ );
// Agregamos el selector de cantidades
add_filter( ‘woocommerce_cart_item_subtotal’, ‘stciwp_selector_cantidades_pago’, 9999, 3 );
function stciwp_selector_cantidades_pago( $product_quantity, $cart_item, $cart_item_key ) {
if ( is_checkout() ) {
$product = apply_filters( ‘woocommerce_cart_item_product’, $cart_item[‘data’], $cart_item, $cart_item_key );
$product_id = apply_filters( ‘woocommerce_cart_item_product_id’, $cart_item[‘product_id’], $cart_item, $cart_item_key );
$product_quantity = woocommerce_quantity_input( array(
‘input_name’ => ‘shipping_method_qty_’ . $product_id,
‘input_value’ => $cart_item[‘quantity’],
‘max_value’ => $product->get_max_purchase_quantity(),
‘min_value’ => ‘0’,
), $product, false );
$product_quantity .= ‘<input type=”hidden” name=”product_key_’ . $product_id . ‘” value=”‘ . $cart_item_key . ‘”>’;
}
return $product_quantity;
}
// Detectamos el cambio de cantidad para recalcular los totales
add_action( ‘woocommerce_checkout_update_order_review’, ‘stciwp_recalcular_totales_selector_cantidades_pago’ );
function stciwp_recalcular_totales_selector_cantidades_pago( $post_data ) {
parse_str( $post_data, $post_data_array );
$updated_qty = false;
foreach ( $post_data_array as $key => $value ) {
if ( substr( $key, 0, 20 ) === ‘shipping_method_qty_’ ) {
$id = substr( $key, 20 );
WC()->cart->set_quantity( $post_data_array[‘product_key_’ . $id], $post_data_array[$key], false );
$updated_qty = true;
}
}
if ( $updated_qty ) WC()->cart->calculate_totals();
}

Guarda los cambios y pasarás de esto…

A esto otro…



Deja una respuesta