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 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', 'ayudawp_selector_cantidades_pago', 9999, 3 );
function ayudawp_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', 'ayudawp_recalcular_totales_selector_cantidades_pago' );
function ayudawp_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…
¿A que es una opción muy interesante?
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!







Hombre, con música mucho mejor
jaja, se coló el Antonio Orozco por ahí 😀
Siempre escribo con música pero hago las capturas de vídeo sin sonido, aquí se me olvidó quitarlo. No hay mal que por bien no venga ¿no? 😉
Muy bueno el articulo, muchas gracias! Tengo una duda diferentes, como podría añadir una celda como ID Fiscal en formulario de checkout solo con código?
Hola Fernando, me ha gustado mucho este artículo.
Lo he probado porque me parece muy útil pero …… cuando añades productos va fenomenal, lo añade y refresca la página pero, cuando sin querer bajas el número de productos y lo dejas a 0, se queda pensando sin refrescar la página hasta que no la refresco manualmente, entonces lo hace correctamente y quita ese producto.
¿Alguna solución? Por ahora lo he quitado.
Trabajo con Divi.
Gracias por tu trabajo!
Buenos días,
He insertado el código, pero los botones se ven demasiado grandes y luego los simbolos – y + no funcionan para establecer la cantidad.
Hay alguna solución?
Gracias,