Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Agregar varios productos al carrito de WooCommerce - AJAX

Estoy tratando de encontrar una manera de seleccionar múltiples variaciones de elementos de una interfaz de Vue dentro de un sitio web de WooCommerce.

Instalé el complemento WC Ajax Cart para tener algún tipo de punto final al que pueda llamar usando AXIOS.

Cada opción selecciono anuncios y le doy a una matriz de productos selectedProducts llamada

Cuando el usuario presiona en el checkout lo que hago es:

 this.textCheckout = "Checking you out..."; //No pun intended actually xD this.products.forEach((item, i) => { if(this.selectedProducts.includes(item.variation_id)) { let adder = new FormData(); adder.append('attribute_alege-zona', Object.values(item.attributes)[0]); adder.append('attribute_tratament', Object.values(item.attributes)[1]); adder.append('quantity', 1); adder.append('product_id', item.variation_id); adder.append('variation_id', item.variation_id); console.log(adder); let me = this; let apel = setTimeout(function(){ axios({ method: "post", url: "https://HOST/?wc-ajax=add_to_cart", data: adder, headers: { "Content-Type": "multipart/form-data" }, }) .then(function (response) { }) .catch(function (response) { console.log(response); }); },1000) } }); let goCart = setTimeout(function() { window.location.href = "https://HOST/cart"; }, 1500 * this.alese.length);

Puede preguntar por qué agregué esas funciones setTimeout . En mi cabeza tenía sentido que en caso de que la llamada se demore, estoy seguro de que agregaré todos los productos al carrito. El máximo que puedo agregar es dos.

Si digamos que selecciono 5 productos, cuando me redirigen a mi carrito solo puedo ver 2 de ellos, a veces 3 (es realmente aleatorio)

¿Tiene alguna idea de cómo puedo agregar todos los productos seleccionados a la misma sesión de carrito?

¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Bien, después de inspeccionar la pestaña de red, esta es la solución que funciona:

 this.toBeAdded.forEach((item, i) => { let adder = new FormData(); adder.append('attribute_alege-zona', Object.values(item.attributes)[0]); adder.append('attribute_tratament', Object.values(item.attributes)[1]); adder.append('quantity', 1); adder.append('product_id', item.variation_id); adder.append('variation_id', item.variation_id); console.log(adder); let me = this; let send = setTimeout(function() { axios({ method: "post", url: "https://HOST/?wc-ajax=add_to_cart", data: adder, headers: { "Content-Type": "multipart/form-data" }, withCredentials: true, }) .then(function (response) { if(i == 0) { document.cookie = document.cookie + " woocommerce_items_in_cart=1; path=/"; }else if (i==me.toBeAdded.length-1){ window.location.href = "https://HOST/cart"; } }) .catch(function (response) { console.log(response); }); }, i*500); });

Básicamente, si es el primer producto, estoy agregando los artículos de WC en la cookie del carrito. Si es el último producto redirijo al carrito.

Cada llamada tiene un retraso de i*500 , donde i es el índice de la matriz de productos

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda