Adicionar produto extra ao Woocommerce por quantidade de unidades selecionadas

  • Autor Autor eswal200
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
eswal200

eswal200

Préstamo impago
1
Zeta
Verificación en dos pasos activada
Suscripción a IA
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:

Inserir CODE, HTML ou 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.?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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:

Inserir CODE, HTML ou 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!
 
Voltar
Topo