Si por la razón que sea prefieres que el texto del botón de tu tienda online sea diferente a «Añadir al carrito» o, sobretodo para productos variables el texto «Ajustes de selección» te parece un poco ambiguo, aquí tienes una función para poder cambiarlo para cualquier tipo de producto en la página de la tienda o de archivo.
Recuerda que debes añadir éste código en el archivo functions.php de tu tema o en un plugin.
Para poder cambiar el texto en la página de producto, puedes utilizar el siguiente:
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );
function woo_custom_cart_button_text() {
return __( 'Comprar', 'woocommerce' );
}
Modificar el texto para productos gratuitos
Si lo que necesitas es modificar el texto del botón, pero sólo para aquellos productos que son gratuitos, puedes utilizar la misma función añadiendo un condicional que comprueba el precio:
//Modificar texto del botón Añadir al carrito si el producto es gratis
function custom_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' , 'custom_woocommerce_product_add_to_cart_text' );
¿Eres implementador o desarrollador WordPress?
En la Zona DPW encontrarás más recursos, tutoriales, plantillas, y una biblioteca de snippets para poder utilizar en tu día a día y ganar tiempo en tu trabajo:
ACCEDER AHORA
Comentarios
29 respuestas a «Cambiar el texto del botón Añadir al Carrito o Ajustes de selección en WooCommerce»
|
Lineas 4 y 23 dan error. Gracias Esther
|
Hola Albert!
Ya está corregido… los dichosos símbolos > y <, que me los cambia.. Mil gracias!
|
Hola!
Gracias por el código. Tengo una duda: sería posible modificar el texto del botón para una categoría de productos concreta?
Saludos
|
Hola Jose Luis,
Puedes añadir un condicional para poner un texto diferente en una categoría en concreto. Te añado un código de ejemplo:
function custom_woocommerce_product_add_to_cart_text() {
global $product;
$product_type = $product->product_type;
$terms = wp_get_post_terms( $product->get_id(), 'product_cat' );
foreach ( $terms as $term ) $categoria = $term->term_id;
switch ( $product_type ) {
case 'external':
return __( 'Comprar', 'woocommerce' );
break;
case 'grouped':
return __( 'Ver opciones', 'woocommerce' );
break;
case 'simple':
if($categoria==147) {
return __( 'Contratar', 'woocommerce' );
} else {
return __( 'Comprar', 'woocommerce' );
}
break;
case 'variable':
return __( 'Ver opciones', 'woocommerce' );
break;
default:
return __( 'Ver detalles', 'woocommerce' );
}
}
add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text' );
Espero que te sirva!
esther.
|
Genial, muchas gracias! Da un aspecto mucho más profesional y así puedo mostrar diferente botón dependiendo si vendo un curso, un ebook, o cursos de afiliados. Estupendo!
Lo que no consigo es que en la página propia del producto aparezca el mismo mensaje, he utilizado un código para personalizar como el que indicas en el post pero es estándar para todos los productos. ¿Es posible modificar también en este caso por categoría de producto?
Muchas gracias!
|
Hola Jose Luis! Imagino que utilizando el mismo condicional pero en el código de producto podrás, peeo tendría que probarlo… a ver si tengo un rtito y te lo confirmo.
Saludos!
|
Hola Esther, se podría eliminar el botón de añadir al carrito en una categoría determinada?. Tengo productos que si quiero que estén a la venta directa y otros en los que sólo aparezca el precio sin posibilidad de compra. Muchas gracias!
|
Hola Ángel,
Sí se puede, justo he actualizado este otro post en el que indico opciones para hacerlo: Quitar botón de añadir al carrito en página de la tienda de WooCommerce
Espero que te sirva!
|
Hola.
He utilizado sólo el segundo código ya que en la página de archivos de productos no he habilitado el botón y todo perfecto. Agradecido.
Saludos.
|
Hola.
Me encontré con un problema. He instalado WPML y me traduce automáticamente el texto de la mayoría de los botones, incluido éste, pero si introduzco este código no lo traduce.
Saludos.
|
Se me olvidó
Tego que decir que trabajo con un tema hijo y el código lo inserté en functions.php en el tema hijo.
|
Hola Luis! El código está bien puesto, el problema es que es un literal estático que WPML no traduce.
Tienes dos opciones, o añadir un condicional en la función para que según que idioma sea añada un texto u otro (En este post tienes más información sobre cómo hacerlo: Añadir un condicional para idiomas de WPML en WordPress
O crear una cadena traducible para WPML, algo más complicado pero que puedes encontrar más información en https://wpml.org/es/faq/por-que-no-aparecen-las-traducciones-de-cadenas/
Espero que te sirva!
esther.
|
Hola , yo necesito que el boton de añadir al arrito este fijo , solo aparece cuando pasas el raton por su sitio,
Sabes como Podría Hacerlo.
Tengo Woocommerce
|
Hola Ana!
El de cómo y donde aparece el botón ya depende de los estilos y funcionalidades de cada tema, imagino que deberás revisar el CSS y mirar si el botón está oculto por defecto para cambiarlo.
Saludos!
|
Hola Esther, gracias por la información que birndas.
Te hago una consulta, estoy usando woocommerce para la venta de cursos online. Sabrás cómo puedo cambiar el nombre del botón de «Agregar al Carrito» solo en los cursos gratis?
Desde ya muchas gracias!
Saludos
|
Hola Juan!
He añadido al final del artículo el código con el condicional que comprueba si el producto es gratuito. En principio aunque se trate de un tipo de producto «Curso» te debería funcionar igual.
Saludos!
|
Buenisimo Esther, muchisimas gracias!!!! Lo voy a probar :)))
Saludos
|
Hola Esther, sabes que lo he probado y no me funciona. El problema es que tengo instalado un tema que ofrece cursos pero en la tienda tooodo me aparece como «Enroll this course» aunque sea en productos ebooks o asesorías o cualquiera. He probado de todo incluso este código y que pues no hay manera alguna que me cambie el texto del botón.
No se si se puede dejar enlaces pero solo para que compruebes de que hablo es educoencasa.com/tienda
Lo raro es que aparece tanto en productos gratis como de pago. La tienda no muestra botones eso es correcto pero si pinchas en cualquier producto verás que aparece el dichoso botón con ese texto. Estoy perdidisima.
Lo raro es que al inspeccionar el botón está todo en orden, es el de woocommerce normal!
|
Hola Paula!
En tu caso creo que está claro que el tema está interfiriendo.
Puede ser que esté utilizando la misma función, y en ese caso podrías probar cambiando la prioridad del filtro:
add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text', 15 );
–> Prueba a añadir el último parámetro numérico, y prueba con diferentes números a ver si dándole más prioridad puedes sobreescribir la función del tema.Otra opción es que el tema lo esté forzando en la plantilla y no puedas cambiarlo con la función, en ese caso para cambiarlo tendrías que buscar el archivo de la plantilla que lo está cambiando ese texto para modificarlo en un tema hijo.
A ver si con un poco de suerte jugando con la prioridad es suficiente.
Saludos!
|
Holaa Esther, primero muchas gracias! Pero tengo un problema con el código, o entendí mal su funcionalidad o algo me falla. Probé el código que recomendaste en uno de los comentarios, que añadías una opción para cambiar el nombre del botón para categorías en concreto, hasta ahi bien el nombre de los productos de esa categoría cambió respecto al resto de productos. Pero realmente lo que necesitaba además es un poco lo que aparece en el video, que una vez pulsas en «Ver opciones» o el nombre que se quiera, no lo añada al carrito, sino que entre en el producto y vean lo que se indica allí. Pero lo que hace es claro cambiar el nombre, pero la función de añadir al pulsar sigue intacta….No se si se puede añadir algo al fragmento para que funcione esa parte. ¿?
Un saludo!
|
Hola!
Sí, lo que comentas son dos cosas diferentes. En este post vemos como cambiar el texto del botón, pero no tocamos el comportamiento. Si es un producto simple, por defecto se añade al carrito, el ejemplo que ves que abre la ficha del producto es porque se trata de un producto con variaciones, en ese caso siempre va a la ficha del producto porque hasta que el usuario no selecciona los detalles no puede añadirlo al carrito.
Si lo que necesitas es que aunque sea un producto simple, el botón no sea añadir al carrito sino ver los detalles, tenemos que cambiar la funcionalidad.
Preparo en cuanto pueda otro artículo para combinar ambas cosas.
Saludos!
|
Holaa, gracias por responder tan rápido, y si sería ese caso que se pudiese poner ver los detalles pero no añadirlo al carrito en ningún momento ni en la tienda fuera, ni en el producto individual, sino que el la descripción ya informaría de que es necesario contactar. Pero tengo que decir, que de momento hice un apaño que me puede valer, lo vi en uno de los comentarios que te hicieron en otro artículo, la solución de quitar el precio del producto y así solo aparece un botón de «Más información» me sirve de momento, porque no sabía que se podía hacer y el precio no me interesa mucho ponerlo de entrada en esos productos, no los tenemos muy claros hasta que hagan el pedido en concreto.
Muchas gracias!!
Saludos
|
Holaa Esther, dije en un anterior comentario que me arreglaba con la solución de quitar el precio y ya estaba, pero al final si que necesitaría poner el precio, y que al hacer click en el botón entre en el artículo sin comprarlo ni dentro ni fuera (en producto simple como decías) Si al final creas un artículo para combinar ambas cosas lo agradecería mucho!
No se cómo puedo estar pendiente, o si lo sueles subir como algo a mayores en este mismo hilo.
Muchas gracias saludos!
|
Hola Viviana!
Ya lo tienes publicado en este artículo: https://www.esthersola.com/reemplazar-anadir-al-carrito-por-ver-producto-en-woocommerce/
Saludos!
|
Hola Esther, tengo una tienda online y tengo metido código para personalización de tipografía y tamaño. Estoy usando justo esta:
/*Modifica la tipografia de los botones añadir al carrito*/
button.single_add_to_cart_button {
font-family: ‘Source Sans Pro’, Poiret One!important;
}
a.button.product_type_simple {
font-family: ‘Source Sans Pro’, Poiret One!important;
}
El problema me deriva en que el botón de Seleccionar opciones no me lo cambia solo el de los productos simples, ¿me echarías una mano y me dirías como puedo hacerlo? Llevo como 2 meses intentándolo y ya he tirado la toalla.
Gracias
|
Hola Anna,
La clase que estás utilizando corresponden al tipo de producto «simple», debes sustituir o añadir el tipo de producto que necesitas (product_type_variable o product_type_external, etc…)
Saludos!
|
Tan fácil y tantas vueltas, ha funcionado perfectamentísimamente. No daba con la palabra clave del código.
Mil gracias de verdad.
Feliz año y saludos
|
Hola Esther.
El texto de los botones de mi tienda online es «comprar». Lo tengo configurado así con un plugin. El problema es que tengo algunos productos, son libros, que se venden juntos, en un paquete y ese paquete está hecho con el plugin Woocommerce Product Bundles y el texto que aparece por defecto es «Añadir al carrito» y no encuentro la manera de cambiarlo, ya que el plugin que utilizo para el resto de tipos de producto no contempla el «bundle».
¿Me podrías echar una mano?
¡Gracias!
Mentxu
|
Hola Mentxu,
Podrías mirar con Loco Translate, que es un plugin para traducir o cambiar cadenas de texto de plugins y themes. Seleccionando el plugin de Product Bundles y buscando el Añadir al carrito, quizás puedas modificarlo (si el plugin lo tienen preparado para ello)
Saludos!