Cambiar el texto del botón de Añadir al Carrito en Woocommerce.

De nuevo publicamos una solución que nos ha pedido un cliente y que puede que encontréis útil. Cómo cambiar el texto del botón “Añadir al carrito” en vuestras tiendas de Woocommerce en WordPress.

Hay ciertas cosas que uno no entiende por qué no vienen por defecto en WordPress, y esta es una de ellas. Queremos cambiar el texto del botón, y no podemos. Hoy os dejamos dos posibles soluciones, como siempre con código y con plugin.

Con código.

Yo suelo, tras años de trabajar en esto, intentar poner el menor número de plugins posibles. Por velocidad de la página, por evitar conflictos, por no tener que estar actualizando cientos de ellos, por evitar vectores de ataques etc etc.

Así que os dejamos unos códigos para poder añadir al fichero functions.php de tu tema hijo o a tu plugin de snippets. ¿Pero ..,.no habíamos dicho que no usabas plugins? Si…pero si no puedo tener tema hijo (porque esté modificando algo que ya está hecho) o si voy a usar varios códigos en un proyecto, Snippets es un plugin que suelo usar.

El siguiente código cambia el texto en páginas de producto individual y en páginas de listado de producto.

// Cambiar el texto en páginas de producto
add_filter( 'woocommerce_product_single_add_to_cart_text', 'smythsys_woo_button_text' );
 
function smythsys_woo_button_text() {

        return __( 'Aquí el texto que quieras', 'woocommerce' ); // Cambiar texto por el que queráis
}
// Cambiar el texto en las páginas que listen productos
add_filter( 'woocommerce_product_add_to_cart_text', 'smythsys_woo_page_cart_button_text' );    // 2.1 +
 
function smythsys_woo_page_cart_button_text() {
 
        return __( 'Aquí el texto que quieras', 'woocommerce' ); // Cambiar texto por el que queráis
 
}

Os dejamos dos variantes más interesantes (fuente):

Por tipo de producto:

add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text' );
/**
 * custom_woocommerce_template_loop_add_to_cart
*/
function custom_woocommerce_product_add_to_cart_text() {
	global $product;
	
	$product_type = $product->product_type;
	
	switch ( $product_type ) {
		case 'external':
			return __( 'Comprar productos', 'woocommerce' );
		break;
		case 'grouped':
			return __( 'Ver productos', 'woocommerce' );
		break;
		case 'simple':
			return __( 'Añadir al carrito', 'woocommerce' );
		break;
		case 'variable':
			return __( 'Selección de opciones', 'woocommerce' );
		break;
		default:
			return __( 'Leer más', 'woocommerce' );
	}
	
}

O por categoría:

add_filter( 'woocommerce_product_add_to_cart_text', 'smthsys_texto_carrito_por_categoria' );
  
function smthsys_texto_carrito_por_categoria() {
global $product;
 
$terms = get_the_terms( $product->ID, 'product_cat' );
 foreach ($terms as $term) {
            $product_cat = $term->name;
            break;
}
 
switch($product_cat)
{
    case 'categoria1'; //Nombre de una categoría
        return 'Texto del botón para la categoría 1'; break;
    case 'categoria2';
        return 'Texto del botón para la categoría 1'; break;
    default;
        return 'Texto del botón por defecto para el resto de categorías'; break;
}
}

Sólo para los productos gratuitos.

//CAmbiar Añadir al carrito si gratis

function smthsys_woocommerce_product_add_to_cart_text($text) {

global $product;
$precio = $product->get_price();

  if(empty ($precio)) {
      return __( 'Gratis', 'woocommerce' );
   }
	return $text;
}

add_filter( 'woocommerce_product_add_to_cart_text' , 'smthsys_woocommerce_product_add_to_cart_text' );

Con plugin.

Para los que no os atrevéis a usar códigos (hacedlo) os dejamos alguna opción de plugin.

  • Aquí tenéis varios. No los hemos probado porque no usamos plugins para algo tan puntual.
  • Loco Translate. A nosotros nos usa usar plugins que puedan cumplir varias funciones. Este traduce cadenas de muchos plugins y temas, así que es buena idea usarlo. Seguro que tenéis alguna otra cosa que queráis cambiar.