WordPress Hosting

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 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?

Compartir en redes
Resumir con IA

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

¡Haz clic en las estrellas para valorarlo!

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

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

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



Sobre el autor

5 comentarios en “Añadir selector de cantidades al finalizar compra en WooCommerce”

    1. 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? 😉

  1. 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?

  2. 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!

  3. 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,

Los comentarios están cerrados.

Scroll al inicio