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

334
Vistas
Woocommerce: ¿obligar a vaciar el carrito después de realizar un pedido en mi sitio?

Tengo un problema recurrente en mi sitio de Woocommerce que es que el carrito no se borra después de realizar un pedido en mi sitio.

Quiero agregar un código en my_theme/functions.php para asegurarme de que el carrito esté vacío. Logré crear este código (abajo).

¿Será esto suficiente para obtener lo que necesito?

 add_action('woocommerce_new_order','clear_the_cart'); function clear_the_cart() { global $woocommerce; $woocommerce->cart->empty_cart(); }

¿Necesito agregar un código para obtener la ID de usuario y luego borrar el carrito para ese usuario?

Si el carrito se borra para cada usuario en lugar de para todos los usuarios, supongo que necesitaré obtener la identificación del usuario actual y luego ejecutar la línea de código para borrar el carrito para ese usuario.

Mi pregunta es si debo limpiar el carrito por usuario o globalmente?

Sé cómo agarrar la identificación del usuario:

 $user_ID = get_current_user_id(); ....
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su método debería funcionar como se esperaba cuando se agrega a function.php.

También puede llamarlo usando WC()->cart->empty_cart(); . el empty_cart() tiene un parámetro $clear_persistent_cart , pero es verdadero por defecto, por lo que su código está bien.

Puede verificar su tema y complementos si no hay nada extraño enganchado en el woocommerce_before_cart_emptied , que se activa al comienzo del método empty_cart() .

El empty_cart() solo vaciará el carrito del usuario actual (el que pasa el pedido), y si este código no es ejecutado por otro servidor (ej: cola) o proceso PHP: los datos de la sesión del cliente estarán disponibles, y así el carrito se puede vaciar. Esto no borrará todos los contenidos del carrito del cliente (para reanudar, se debe llamar a empty_cart() desde una solicitud del cliente (ajax o no), y borrará este carrito del cliente).

Por el contrario, un webhook o una solicitud admin-ajax de su proveedor de pagos a su pasarela de Woocommerce, o un CRON, no borrará ningún carrito (no tiene datos de sesión). Si ese es su caso, necesitará algo como: guardar la identificación de los clientes en algún lugar de la base de datos, luego conectarla en algún lugar (como init ) con un método que verifique "Si la identificación del usuario está en la matriz de la base de datos, clear_cart() , luego elimínela de la matriz de la base de datos".

Ahora, Woocommerce debería borrar el carrito de forma predeterminada una vez que se completa el pedido. Aquí hay algunas cosas para probar y probar:

  • cambie su add_action por add_action( 'woocommerce_new_order', 'clear_the_cart', 50, 3 ); , aumentando la prioridad de $ para que se ejecute al final
  • puede probar usando el gancho woocommerce_order_status_completed si cumple con sus requisitos
  • ¿Esto le sucede a todos los clientes? ¿Y tú directamente en local, desarrollo o producción? Si es así, ¿puede intentar agregar un wp_die() o relacionado, en su método clear_the_cart() para validar que este código se active después de su pedido?
  • ¿Utiliza una pasarela de pago de Woocommerce personalizada? Agregue detalles como la versión de WP, la versión de Woocommerce, la pasarela de pago, etc.

Tenga en cuenta que algunos complementos (y, por lo tanto, algunos códigos personalizados en los ganchos) pueden evitar que el carrito se vacíe después de completar el pedido ( ver )

over 4 years ago · Santiago Trujillo 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