Woocommerce permite hacer tiendas de productos físicos, digitales, afiliados, reservas… es por eso que el texto de añadir al carrito muchas veces no casa con su objetivo. Por lo que con unos simples códigos vamos a ver cómo cambiarlos en nuestro ecommerce.
Índice
Modificar el texto de añadir al carrito
Añadir este código en vuestro functions.php de vuestro child theme o bien en vuestro plugin de snippets como explico aquí.
// Variar el botón de añadir al carrito
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );
function woo_custom_cart_button_text() {
return __( 'Conseguir Ebook', 'woocommerce' ); // Cambiar texto por el que queráis
}
// Variar el botón de archivo
add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' ); // 2.1 +
function woo_archive_custom_cart_button_text() {
return __( 'Conseguir Ebook', 'woocommerce' ); // Cambiar texto por el que queráis
}
Con este ejemplo de alguien que necesita conseguir su ebook ya, es tontería poner añadir al carrito.

Cambiar el texto en un producto específico
add_filter( 'woocommerce_product_single_add_to_cart_text', 'custom_cart_button_text' );
add_filter( 'woocommerce_product_add_to_cart_text', 'custom_cart_button_text' );
function custom_cart_button_text($text) {
global $woocommerce;
global $post;
$post_id = $post->ID;
if($post_id == 1311){
$text = __( 'Financiar ahora', 'woocommerce' );
}
return $text;
}
Cambiar el texto cuándo ya está añadido al carrito
Con este código conseguiremos que cuando el cliente navegue por la tienda y añada un producto, pueda saber si vuelve al mismo que ya lo tiene añadido.
// Cambiar el texto de añadir al carrito cuando ya está añadido
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );
function woo_custom_cart_button_text() {
global $woocommerce;
foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
return __('Añadido al carrito, ¿añadir más?', 'woocommerce'); //Cambiar el texto entre comillas de lo que queréis mostrar en el botón
}
}
return __('Añadir al carrito', 'woocommerce');
}
// Cambiar texto en el archivo
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
global $woocommerce;
foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
return __('Añadido al carrito, ¿añadir más?', 'woocommerce'); //Cambiar el texto entre comillas de lo que queréis mostrar en el botón
}
}
return __('Añadir al carrito', 'woocommerce');
}
No recomiendo aplicar esta función, pero si queréis estas pijaditas adelante, lo tenía guardado porque me lo pidió un cliente, se quedaría algo así:

Si necesitas ayuda con estos cambios o tu tienda online en Woocommerce puedes contactar conmigo desde el menú.
[ratings]
Hola,
Gracias por la información. En este caso, no sería más sencillo simplemente traducir?
add_filter(‘gettext’, ‘translate_text’);
add_filter(‘ngettext’, ‘translate_text’);
function translate_text($translated) {
$translated = str_ireplace(‘Añadir al carrito’, ‘Comprar’, $translated);
return $translated;
}
Hola Manuel, sí sería más sencillo. El problema de hacerlo así es que en cualquier zona que esté añadir al carrito se cambiará por comprar y solo lo queremos cambiar en el botón, ya que puede haber otras partes de la web en las que salgan y no queramos traducirlas.
Hola, tengo un problema con el codigo de » Cambiar el texto cuándo ya está añadido al carrito » no me funciona en el tema shopical , en otros temas si , como se podria solucionar eso?
Hola Alejandro,
Seguramente sea porque en esa plantilla ya hay una modificación de este estilo, por eso no recomiendo plantillas pre-hechas como puedes ver en este post: https://diegol.top/woocommerce/mejores-plantillas-para-woocommerce/
De todas formas intenta aumentar la prioridad a 99 o encuentra en el function.php o en los archivos del tema una modificación así.
Un saludo!
Diego, ve verdad mil gracias por ayudar a los emprendedores compartiendo tu conocimiento.
Me funcionó perfecto el cambio de nombre del botón de los productos en woocommerce y te confirmo que es una platilla, es decir funciona perfecto. Gracias.
Pero serías tan amable de indicarme ¿como hago para cambiar el icono del mismo botón o quitarlo si no se puede cambiar ?
Hola Gerónimo, muchas gracias por tus palabras!
El icono lo puedes añadir antes o después del texto con alguno de font awesome, por ejemplo el de cart: https://fontawesome.com/v4.7.0/icon/shopping-cart
Añades ese fragmento de html y listo.
Un saludo!
¿Cómo quedaría el código del snippet con ese fragmento html?
No consigo que me funcione. He añadido antes de…. Añadido al carrito, ¿añadir más?
….pero sólo me muestra el código HTML como texto dentro del botón.
Hola me uno a esta pregunta, me muestra el código html como texto, donde debo colocar el html?
gracias de antemano!
Diego!!
Muchísimas gracias, me ha venido perfecto!
Sólo apuntar que «woocommerce_product_add_to_cart_text» también funciona para el shortcode «add_to_cart» que es donde lo he usado yo 🙂
Gracias mozo!
Me alegro que te ayudase Dani!!
Me apunto tu recomendación, gracias 🙂
Hola, Muchísimas Gracias por tu aporte, ya voy a probar esto. Tengo una duda, con mi equipo estoy creando un marketplace y me suceden 3 casos que me gustaría tengan un texto diferente:
1) Cuando hay stock, que quede como esta (un botón que dice añadir al carrito y otro que dice comprar)
2)Si no hay stock, y el vendedor tiene configurado «No permitir reservas» que el botón aparezco deshabilito, o mejor aun, que el texto diga sin stock y el botón deshabilitado
3) Si no hay stock, pero el vendedor tiene permitido las reservas de producto que diga un texto como «No hay stock pero puedes reservar»
Como debería hacerlo.
Muchísimas gracias por el consejo. Me ha funcionado perfecto.
Lo ue pasa es que solo se puede poner un producto, si metes una lista de productos, aunque lo separes por comas la web peta.
¿Habría que poner el código para cada producto o se puede poner una array de alguna forma?
Mil gracias