De verdad, no se me ocurre bajo qué circunstancias alguien querría añadir un botón para vaciar el carrito en su tienda. Pero vamos a ver, alma cándida: te has matado a hacer marketing, has pagado la mitad de tus ingresos a Google por publicidad en AdWords y te has dejado ocho capas de piel en las teclas creando contenido, para que ahora, cuando consigues que un cliente ponga en su carrito media docena de productos de tu tienda, vengas tú a preguntarle si está seguro de que quiere comprarlas y si no preferiría vaciar el carrito…
Tabla de contenidos
¿Deberías poner un botón para vaciar el carrito?
El caso es que a mí no se me ocurre ninguna razón para querer hacer eso, pero resulta que hay gente que sí, que quiere. Tres consultas en busca de algún plugin para hacerlo me han llegado el último mes al email.
Como decía en la intro, no me parece buena estrategia dar ese tipo de ideas al cliente, o ponérselo fácil en caso de que se le pasen por la cabeza. Peeeero, tu visión no tiene por qué coincidir con la mía, y hay gente que cree que es buena idea ponerlo.
Conozco a quien diría que todo esto es opinática, y que aquí las opiniones no valen, que lo que valen son los números. Lo correcto sería hacer un test A/B. ¿Quieres poner ese botón? Perfecto, hazlo. Pero por favor, haz un test A/B y después decide en consecuencia: las estadísticas no te van a engañar, independientemente de cuál sea tu opinión o la mía. Si no sabes en qué consiste un test A/B, puedes echar un vistazo a este artículo:
El plan B: al menos, enséñale algo interesante cuando vacíe el carrito
Bien, digamos que finalmente decides poner ese botón y facilitar la vida al cliente a la hora de vaciar el carrito. Al menos, aprovecha esa acción para mostrarle al cliente promociones, ofertas o contenidos interesantes. Ya lo he dicho alguna vez: el carrito vacío de WooCommerce es un espacio tremendamente desaprovechado en términos de marketing.
Puedes configurar este espacio (el del contenido del carrito vacío) para mostrar al usuario promociones, artículos destacados, ofertas… lo que quieras. Todo eso puedes hacerlo mediante este plugin:
De esta forma podrás «repescar» a esos usuarios que vacíen el carrito, haciéndoles ver productos, ofertas o promociones que quizá despierten su interés y le animen a seguir navegando en el sitio y, tal vez, llenar el carrito de nuevo.
Crear un botón para vaciar el carrito
Si buscas en internet, encontrarás un montón de tutoriales explicando cómo crear un botón para vaciar el carrito en WooCommerce. No te molestes, son basura la mayoría (quizá se salve alguno, yo no he conseguido dar con ninguno que explique como hacerlo bien).
Y te diré por qué: todos ellos recurren a editar el archivo que WooCommerce utiliza para crear la página del carrito, y añadir ahí el código para el dichoso botón. Y eso es una tremenda chapuza, ya que a partir de ahí tienes dos opciones:
- Perder los cambios cada vez que WooCommerce se actualice
- Copiar el template al árbol de directorios de tu plantilla, con lo que perderás las futuras actualizaciones para ese archivo, con todas las consecuencias que ello puede llegar a tener en un futuro
No, en esta casa hacemos las cosas bien, así que vamos a crear un botón para vaciar el carrito utilizando los hooks de WordPress y de WooCommerce, que para eso están.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Si eres de ésos a los que el código les da un poco de repelús, y prefieres lamer en pleno agosto las chanclas de un camionero por dentro antes que tocar un snippet de código con un palo, estás de suerte: sáltate esta parte, porque todo el código que menciono te lo he empaquetado en un cómodo plugin y te lo regalo abajo del todo.
Si por el contrario te va la marcha y eres de los de do it yourself, vamos a ver el código necesario con explicaciones. Acerca de donde incluirlo, ya he hablado un par de veces de ello, aportando diferentes soluciones:
Botón para vaciar el carrito por código
Bien, crear esta funcionalidad es facilísimo, sólo necesitamos dos cosas:
- Crear una función que se quede «a la escucha» de un parámetro, que disparará la acción de vaciar el carrito
- Imprimir en pantalla el propio botón que lanzará el parámetro, en el sitio del carrito donde más nos guste
Es todo muy fácil. Para la primera parte (y esto lo hacen bien la mayoría de los tutoriales que encontrarás por ahí) engancharemos nuestra función al hook init de WordPress:
add_action ('init', function () {
global $woocommerce;
if (isset( $_GET['vaciar-carrito']))
$woocommerce->cart->empty_cart();
});
Traducción: cuando veas una URL con el parámetro vaciar-carrito, vacíame el carrito. Más fácil imposible.
Ahora nos falta poner el botón en el carrito, y ahí es donde fallan todos los copipega que encontrarás circulando por ahí. Y la cosa tiene delito, porque WooCommerce nos lo pone realmente fácil para añadir lo que queramos en el carrito sin necesidad de tocar ni un sólo archivo.
¡Hasta 19 hooks incluye la página del carrito, más uno que se ejecuta cuando está vacío! ¡19! Repartidos por todo el template: antes del contenido, de la tabla, en el lateral donde muestra los upsells, donde el cuadro para los cupones… Pero no, a ti te aconsejan editar el template…
En fin, elegimos el que más nos guste. Yo creo que queda bastante bien utilizando el hook woocommerce_cart_coupon, que es el que utiliza el campo para el código de los cupones. Si tienes los cupones activados, el botón para vaciar el carrito aparecerá junto a él:
add_action ('woocommerce_cart_coupon', function () {
global $woocommerce;
echo '<a class="button" href="'.$woocommerce->cart->get_cart_url().'?vaciar-carrito">Vaciar el carrito</a>';
});
Es decir: detéctame cuál es la URL del carrito, y me pones un botón que enlace a esa URL seguida del parámetro que dispara la acción de vaciarlo.
Si no tienes los cupones activados puedes elegir otro hook, como por ejemplo woocommerce_cart_actions, junto al botón de actualizar el carrito. Para el plugin que regalo más abajo utilizo una función para saber si están o no activados, y enganchar el botón a uno u otro hook dependiendo de ello.
Y ya lo tienes. Dos sencillas funciones de un par de líneas. El resultado es éste:
Plugin para añadir un botón para vaciar el carrito
Ya has visto lo sencillo que es. Si, como decía más arriba, prefieres la comodidad de un plugin para activar y listo… pues lo prometido es deuda, así que aquí lo tienes, puedes descargarlo libremente:
Lo único que te pido a cambio es que si te resulta de utilidad dejes un comentario aquí abajo y compartas este artículo en las redes sociales. ¡Quizá le sirva a alguien más! 🙂
Antonio dice
Eres un crack, gracias una vez mas…
Enrique Ros dice
Muchas gracias a ti por tu comentario 😀
Josma dice
Hola Enrique, felicitaciones por tus trabajos super claros y concisos y muchísimas gracias por el regalo del plugin. Bueno ya en si, todos tus trabajos son un verdadero regalo.
Un abrazo 🙂
Enrique Ros dice
Muchas gracias a ti por tu amabilísimo comentario 🙂
Un saludo.
victor daniel dice
Muchas gracias por el Plugin me funciono voy a compartirlo en redes sociales muchas gracias
Guillermo dice
Hola, Enrique.
Llevo un par de días buscando opciones para lo que necesito, pero no encuentro nada. A ver si me puedes ayudar.
Necesito que al añadir un producto nuevo al carrito éste se borre primero, para que sólo se pueda realizar la compra de un producto en cada proceso de venta. Entiendo que habría que hacerlo a base de código y funciones, editando el archivo functions, pero mis conocimientos de programación son prácticamente nulos.
Muchas gracias.
Francisco Naranjo dice
Hola Guillermo,
Yo estoy buscando hacer exactamente lo que tu comentaste, pero no se como hacerlo.
Conseguiste resolverlo por codigo?
Muchas gracias.
Edovcol dice
Excelente, muchas gracias, solo decir que «get_cart_url()» me muestra un mensaje que dice que está en desuso y que en su lugar debe usar «wc_get_cart_url()»; buscando como usarlo di con esta manera, pues según vi, hay que asignarlo a una variable:
De nuevo muchas gracias!
Edovcol dice
Al publicar mi comentario noto que el código quedó mal (me tomó el <a class="button" href=… como un link) ….
Enrique J. Ros dice
Hola Edovcol
Sí, efectivamente desde WC 3.x han cambiado algunas funciones, entre ellas esta. En cualquier caso no sé de dónde has sacado el código que has puesto, pero no es correcto:
En fin, que si has probado el código habrás visto que no funciona 🙂
Un saludo.
Jose dice
Hola Enrique!
Muchas gracias por tu post, es muy interesante. Yo soy de esas personas que me resisto a usar este botón pero tengo un problema que no se cómo solucionar y por eso me planteo la opción de este botón. Yo uso woocommerce para vender cursos online y uso cupones de descuento en url en mis acciones de marketing. La cuestión, es que no se por qué, mis carritos abandonados no se vacían nunca, lo cual es un problema para mi porque normalmente hago promociones de un curso X, con un link que te lleva directo a finalizar compra, pero claro al llegar aparece en el carrito otro curso que el usuario tiene ahí de igual hace 1 mes y que no está en promoción… En definitiva: más clics para eliminar eso -> menos ventas.
He intentado de mil y una formas configurar que el carrito se vacíe a los 3 días, pero no lo consigo, por eso me planteo el uso de la estrategia del botón… que tampoco es la mejor solución, pero igual me salva alguna venta.
¿Se te ocurre cómo solucionar el tema de la caducidad de los carritos?
Muchas gracias!
Enrique J. Ros dice
Hola Jose
El tiempo de expiración del carrito en WooCommerce es, por defecto, de 48 horas. El borrado de las sesiones se realiza a través de tareas cron, así que verifica si éstas están funcionando correctamente en tu web. Échale un vistazo a esta entrada, quizá te resulte de ayuda.
Adicionalmente, te diré que estoy programando un plugin que permita establecer manualmente la caducidad de los carritos y que estará listo en unos días. En cualquier caso, lo que este plugin hace es modificar el tiempo de expiración establecido por WooCommerce. Si tu web lo está ignorando (por ejemplo, por el tema del cron que te comentaba, o porque alguna otra función personalizada, quizá en la plantilla, lo está estableciendo a su aire) tampoco te va a funcionar.
Un saludo.
Luigi Sabetta dice
Hola con este plugin WooCommerce Cart Expiration se puede configurar el tiempo de compra que le das al cliente. Saludos
Guillermo dice
Ooleeee máquina!!! Yo no sé como lo hago pero debes estar casado con San Google, cada vez que busco algo me aparece tu web!! jajajaja
Muchas gracias. Botoncito puesto, y como va con el coupon y el coupon solo aparece con los clientes registrados (gracias a tí también) los clientes que no estén registrados no podrán vaciarlo, sólo los registrados.
Cuidateee.
Enrique J. Ros dice
Hola Guillermo
Me alegra que mis contenidos te estén siendo de utilidad, gracias por tu comentario 🙂
Un saludo
Elvira Pelaez dice
Gracias por tu «plugin»
Marian dice
Holaa Tienes alguna guia de como usar el plugins?
o en su defecto, como puedo insertar el codigo para usar un boton en vaciar carrito…
De antemano muchas gracias.
Luigi Sabetta dice
Hola Enrique te sigo con mucha atención eres un monstruo. Tengo una duda de como poder vaciar el carrito de compra si el cliente se dirije a una página en específico por ejemplo la página principal o la del blog? si tienes un código para esto se te agradece
Javier dice
Genial!! Excelente! Muchas gracias por el codigo!!!
Un sola pregunta… Cual es el hook de «continue shopping»? Es que preferiria ponerlo junto a ese boton!!!
Muchas gracias
Enrique J. Ros dice
Hola Javier
Ese botón no forma parte del template del carrito, por lo que no tiene un hook propio. Al contrario, ese botón se engancha a algún hook concreto.
Un saludo
Mario dice
Muchas gracias una vez más por tu contenido
Yo estoy como algunos de arriba…
En mi caso, vendo un servicio. Digamos que vendo pack Básico, Medio y Avanzado.
Por la lógica del servicio, alguien elige una de las tres modalidades, pero nunca dos a la vez. Y pasa que si te metes en uno pero no compras, sales y te vuelves a meter se acumulan.
Y es un problema porque yo utilizo Direct Checkout para que no pasen por el carrito. Me encantaría que sólo se pueda elegir uno. Osea que cuando sales de la página de Finalizar compra se vacíe automáticamente el carrito.
Alguien sabe si es eso posible?
Sé que hay opción con algún plugin de limitar las cantidades de un producto. Pero claro, si cambian de producto sí que se pueden acumular.
Muchas gracias de antemano
Enrique J. Ros dice
Hola Mario
Echa un vistazo a este plugin, te permite establecer durante cuánto tiempo se mantendrán los productos en el carrito (después éste es vaciado).
Un saludo
Oscar dice
Yo no lo quiero poner, pero en nuestro caso, (no tengo idea de porqué lo hace) al finalizar una compra, la mayoría de las veces NO lo borra. Y cuando el cliente quiere hacer un pedido nuevo está todo el carrito de la compra anterior.
No se si a alguien le ha pasado, poniendo un boton para vaciar el carrito sería una solucion chapuza pero efectiva. ¿Sabes porque puede ser que no los borre? He detectado que la mayoría de las veces cuando se hacer el pago por redsys, pero he cambiado el plugin y pasa lo mismo.
Gracias
Enrique J. Ros dice
Hola Oscar
Si has probado ya usando otro plugin para la pasarela, haz algunas pruebas desactivando el resto de plugins por si alguno está provocándolo.
Un saludo
Carrizo Rodolfo Fernando dice
Buen día Enrique. Te Felicito…!!!. Es Excelente el material que compartes en este Post. Muchas gracias por compartir tu conocimiento. Soy un programador del Norte de Salta, en una localidad que se llama Tartagal. Hace un tiempo estoy incursionando en el desarrollo con WordPress. Y sin el aporte de personas como vos, seria muy difícil poder avanzar. Por eso reconozco y agradezco profundamente tu contribución.
Saludos y abrazos desde Tartagal.
Fer dice
Muchísimas gracias!
Compartir conocimientos es el camino, celebro tu postura.
En segundos solucioné el asunto de vaciar carrito.
Sebastián dice
Hola!! me funcionó para poner el botón en el carrito!!
Ahora me gustaría agregarlo al mini carro, osea al carro que tengo en el header.
Me puedes ayudar a lograrlo?
Enrique J. Ros dice
Hola Sebastián
El mini carro no lo pone WooCommerce, sino la plantilla (generalmente) o quizá algún plugin específico que estés usando para ello, así que depende exclusivamente de ese componente. Consulta con su soporte, son los que mejor te pueden ayudar.
Un saludo,
Sheila González dice
Me fue de mucha ayuda el plugin para vaciar carrito, en general toda la informacion que compartes es muy valiosa a mi me haz ayudado un monto, gracias!
Oleh kuchma Vuduvd dice
Hola, gracias por el articulo, funciona a la perfección !
¿Cómo podría borrar / vaciar el carrito de todos mis clientes o mejor dicho de toda la tienda a la 13:01 horas?
Gracias de ante mano !
juan pedro dice
que grande eres Enrique… Sigue así
Raúl Eduardo Scalia dice
Gracias muy buenos Plugins realiza!