Permitir modificar la cantidad del producto en el checkout

    Añade selector de cantidad en la página de Finalizar Compra de WooCommerce.

    /* 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', 'nwp_selector_cantidades_pago', 9999, 3 );
    function nwp_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', 'nwp_recalcular_totales_selector_cantidades_pago' );
    function nwp_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();
    }

    Herramientas relacionadas

    • WooCommerce

      El plugin para crear tiendas online por excelencia. Tanto de productos físicos como digitales. Es la base para prácticamente cualquier proyecto web que acepte pagos online.