Añadir producto extra a Woocommerce por cantidad de unidades seleccionadas

  • Autor Autor eswal200
  • Fecha de inicio Fecha de inicio

eswal200

Préstamo
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
Hola gente, estoy creando una tienda pero el cliente necesita que cada vez que se añada un producto de una cagatoria especifica se añada un producto adicional.

Tengo un código que lo hace:

Insertar CODE, HTML o PHP:
function aaptc_add_product_to_cart( $item_key, $product_id ) {

    $product_category_id     = 76; // cricket bat category id

    $product_cats_ids     = wc_get_product_term_ids( $product_id, 'product_cat' );

    if ( ! is_admin() && in_array( $product_category_id, $product_cats_ids ) ) {
        $free_product_id = 2773;  // Product Id of the free product which will get added to cart
        $found         = false;

        //check if product already in cart
        if ( sizeof( WC()->cart->get_cart() ) > 1 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->get_id() == $free_product_id )
                    $found = false;
                
            }
            // if product not found, add it
            if ( ! $found )
                WC()->cart->add_to_cart( $free_product_id );
        } else {
            // if no products in cart, add it
            WC()->cart->add_to_cart( $free_product_id );
        }       
    }   
}

add_action( 'woocommerce_add_to_cart', 'aaptc_add_product_to_cart', 10, 2 );


El código funciona bien, pero el problema es que si se se eligen 2 unidades del producto A el producto adicional solo se añade 1 vez, y la idea es que el producto adicional se añada automáticamente la misma cantidad de unidades que el comprador eligió.

Explico:

El cliente añade 2 unidades del producto A, automáticamente el producto adicional se añade 2 veces, O si el cliente añada 10 unidades del producto A el producto adicional se añade 10 veces de manera automática.

Quien me ayuda con una manito con ese codigo.?
 
Puedes lograr que el producto adicional se añada la misma cantidad de veces que el comprador eligió haciendo algunas modificaciones en tu código. Te paso una versión actualizada del código que debería funcionar según tus requerimientos:

PHP:
function aaptc_add_product_to_cart( $item_key, $product_id, $quantity ) {

    $product_category_id = 76; // ID de la categoría del producto A
    $free_product_id = 2773;  // ID del producto adicional gratuito

    $product_cats_ids = wc_get_product_term_ids( $product_id, 'product_cat' );

    if ( ! is_admin() && in_array( $product_category_id, $product_cats_ids ) ) {
        $found = false;

        // Recorrer las unidades seleccionadas y añadir el producto adicional por cada una
        for ($i = 1; $i <= $quantity; $i++) {
            $found = false;

            // Verificar si el producto adicional ya está en el carrito
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->get_id() == $free_product_id ) {
                    $found = true;
                    break;
                }
            }

            // Si el producto adicional no está en el carrito, añadirlo
            if ( ! $found ) {
                WC()->cart->add_to_cart( $free_product_id );
            }
        }
    }
}

add_action( 'woocommerce_add_to_cart', 'aaptc_add_product_to_cart', 10, 3 );

Con este código actualizado, se recorre la cantidad de unidades seleccionadas del producto A y se añade el producto adicional la misma cantidad de veces. Espero que esta solución sea útil para ti. ¡Déjame saber si tienes alguna pregunta adicional!