• Buenos días,

    Tengo un problema con el botón añadir al carrito. Al poner la cantidad de producto que deseo y posteriormente darle al botón de añadir al carrito, no me añade los productos indicados. Siempre me suma de 1 en 1.

    Este es el codigo que tengo:

    add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_loop_ajax_add_to_cart', 10, 2 );
    function quantity_inputs_for_loop_ajax_add_to_cart( $html, $product ) {
        if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
            // Get the necessary classes
            $class = implode( ' ', array_filter( array(
                'button',
                'product_type_' . $product->get_type(),
                $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
                $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
            ) ) );
    
            // Adding embeding <form> tag and the quantity field
            $html = sprintf( '%s%s<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>%s',
                '<form class="cart">',
                woocommerce_quantity_input( array(), $product, false ),
                esc_url( $product->add_to_cart_url() ),
                esc_attr( isset( $quantity ) ? $quantity : 1 ),
                esc_attr( $product->get_id() ),
                esc_attr( $product->get_sku() ),
                esc_attr( isset( $class ) ? $class : 'button' ),
                esc_html( $product->add_to_cart_text() ),
                '</form>'
            );
        }
        return $html;
    }
    
    add_action( 'wp_footer' , 'archives_quantity_fields_script' );
    function archives_quantity_fields_script(){
        if( is_shop() || is_product_category() || is_product_tag() ): ?>
        <script type='text/javascript'>
            jQuery(function($){
                // Update quantity on 'a.button' in 'data-quantity' attribute (for ajax)
                $('form.cart').on('change', 'input.qty', function() {
                    if ($(this).val() === '0') 
                        $(this).val('1');
                    $(this).closest('form.cart').find( 'a.add_to_cart_button').attr('data-quantity', $(this).val());
                });
            });
        </script>
        <?php endif;
    }

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Iniciador del debate adrianprueba

    (@adrianprueba)

    Ya he encontrado la solución. Si a alguien le interesa.

    add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );
     
     
    function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
    $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
    $html .= woocommerce_quantity_input( array(), $product, false );
    $html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
    $html .= '</form>';
    }
    return $html;
    }
    rodrigoquezadaramirez

    (@rodrigoquezadaramirez)

    Gracias!!!

    SI me das una mano, tengo un grid, pero no logro saber como poner un selector de cantidad(input, select, lo que sea), que le permita al clientes agregar la cantidad a comprar y luego de al boton de agregar, sin tener que ir a la ficha de producto

    mira es acá : https://okbotillerias.cl/llayllay/whiskies/

    Iniciador del debate adrianprueba

    (@adrianprueba)

    @lgrusin

    Puse resuelto porque pensaba que estaba solucionado el problema. Luego me dí cuenta de que aún persistía el error y tuve que volver a abrir otro tema porque aquí no podía volver a escribir.

    En cuanto a lo que me ha comentado @carloslongarela no entiendo lo que me indicas en la imagen.

    @adrianprueba lo que te puse es la imagen es la manera de hacer Debug y ver los datos que se envían a través de AJAX al añadir al carrito, con eso deberás ir probando lo que se envía hasta encontrar el posible error… como te indicaba en la otra respuesta, usa los estándares ya que si no compruebas correctamente los tipos pueden darse errores:

    No es lo mismo $cant == 0 que $cant === 0 ó $cant == '0' que $cant === '0'

    utiliza las funciones parseint en js, intval en PHP, etc… en resumen, código conforme a estándares (los if con llaves, etc.)

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘Woocommerce no suma correctamente’ está cerrado a nuevas respuestas.