Cómo cambiar cualquier texto en WooCommerce

Aunque tiene mérito tener la traducción al español de WooCommerce, en ocasiones en nuestra tienda online preferiríamos que algún texto mostrado fuese otro, ya sea por cuestiones personales o comerciales.

Me refiero a textos como «Añadir al carrito«, «Ir a la tienda«, «Oferta» o cualquier otro texto por defecto.

Pues bien, es muy fácil, solo tienes que adaptar el siguiente código a tus necesidades:

add_filter('gettext',  'translate_text');
add_filter('ngettext',  'translate_text');
 
function translate_text($translated) {
     $translated = str_ireplace('TEXTO QUE NO QUIERO',  'TEXTO QUE SÍ QUIERO',  $translated);
     return $translated;
}

Solo tienes que personalizarlo a tu gusto, con las palabras que quieras sustituir, y añadirlo al archivo functions.php de tu tema hijo o a tu plugin de personalizaciones, apaños y demás.

¿Necesitas cambiar más de un texto en WooCommerce?

Por petición popular amplio el artículo por si necesitas cambiar más de un texto en tu tienda.

Si necesitas cambiar varios textos, de nuevo gracias a gettext, crearíamos entonces una función algo más compleja, como esta:

/**
 * Cambio de textos en WooCommerce/WordPress
 *
 * @link http://codex.wordpress.org/Plugin_API/Filter_Reference/gettext
 */
function my_text_strings( $translated_text, $text, $domain ) {
	switch ( $translated_text ) {
		case '¡Oferta!' :
			$translated_text = __( '¡Rebajado!', 'woocommerce' );
			break;
		case 'Añadir al carrito' :
			$translated_text = __( 'Añadir a la cesta', 'woocommerce' );
			break;
		case 'Productos relacionados' :
			$translated_text = __( 'Quizás te interesen estos fantásticos productos', 'woocommerce' );
			break;
	}
	return $translated_text;
}
add_filter( 'gettext', 'my_text_strings', 20, 3 );

¡Que lo disfrutes y personalices a tu gusto!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 4.7 / 5. Total de votos: 46

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

60 comentarios en “Cómo cambiar cualquier texto en WooCommerce”

  1. Interesante esta solución, yo suelo generar el archivo de traducción con Poedit o, si el proyecto lo requiere, con WPML. Pero está bien conocer otro método más, gracias Fernando!

  2. Hola Fernando,

    Este truco me interesa mucho, pero he intentado hacerlo para traducir 2 cadenas y no lo consigo.

    He probado poniendo 2 veces la misma cadena y me sale un error 500 y poniendo 2 veces nada más que las declaraciones y las traducciones y tampoco lo consigo.

    ¿Me podrías decir si se puede hacer o solo sirve para una cadena?

    Muchas gracias

  3. Hola. Esto me ha servido de mucho..
    Tenfo varios textos que quiero cambiar, ¿Como se hace para eso?
    Porque intente insertando el mismo codigo, cambiando nombre de funcion y de variable..
    Pero no funciona.

    ¿Como le hago si quiero modificar más de un texto?
    ¿Se puede con una misma funcion?

    Gracias por tus excelentes articulos, siempre tan útiles y didacticos..

  4. Sergio Casabona

    No sé si mi mensaje estará exactamente en el mejor lugar. Pero luego de quemarme las pestañas un buen rato, he dado con una solución que a mi me vino genial.
    Resulta que hasta donde yo entiendo, el woocommerce toma por defecto el idioma que tengamos instalado en el wordpress. Por ejemplo, mi wordpress estaba instalado en Españo AR de Argentina. Como no existe una versión estable de esta traducción, pueso el woocommerce me tomaba por defecto el idioma inglés en la tienda. Ahora bien, cuando cambié el idioma de toda la instalación de Wordpress y la coloqué en Español a secas, osea, Españo de España, mágicamente toda mi tienda pasó a estar en castellano. Por qué? imagino que woocommerce cuenta con una traducción estable de Español y no así de Español Argentino.
    Quizás de este modo si vamos a ajustes generales de nuestro Wordpress y cambiamos el idioma a Español, podamos cambiar toda la configuración de nuestra tienda sin editar código y sin utilizar ningún plugin.
    Espero me haya explicaco bien y si alguien entiende un poco más sobre por qué sucede esto, ojalá lo explique. A mi me ha servido de maravillas!

    1. Exactamente, por eso es importante que se consoliden las comunidades de cada país y, al menos, mantengan al día las traducciones de los plugins más importantes, como WooCommerce.

      Ahora bien ¿no te gusta aún algún texto traducido? para eso está este truco.

      Un saludo desde Madrid

      1. Hola, tengo un problema, que en mis notas en pdf con el plugin WooCommerce PDF Invoices & Packing Slips la traducción que hace el Albarán de Entrega ( en lugar nota de envio para entrega en México) y en lugar que diga Factura, queiro que diga nota…como lo puedo cambiar? no encuentro en la plantilla WooCommerce PDF Invoices & Packing Slips el archivo funcion.php…

  5. Una gran ayuda Fernando, nada más felicitarles. Ahora mi consulta puede que haga trabajar más la neurona. He tratado de cambiar el texto «añadir al carrito» solo para los productos que aparecen en la página del carrito de compras, y no he dado con el método para ello. ¿Es posible hacer esto? ¿Cómo puedo hacerlo?

  6. juan david Rojas

    Hola, me parece magnifico! solo que tengo una duda al tratar de cambiar mas de un texto no funciona el texto, pero si lo hago con uno solo funciona correctamente ! que debe hacer?

    Este es el codigo:

    function my_text_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
    case ‘Comprar’ :
    $translated_text = __( ‘Continue shopping’, ‘Continuar comprando’ );
    break;
    case ‘Cupon’ :
    $translated_text = __( ‘Apply coupon’, ‘Aplicar cupon’ );
    break;
    case ‘Carro’ :
    $translated_text = __( ‘Update cart’, ‘Actualizar carro’ );
    break;
    }
    return $translated_text;
    }
    add_filter( ‘gettext’, ‘my_text_strings’, 20, 3 );

  7. Luis Miguel López

    Muchas gracias por el truco…Es realmente útil y fácil. Sin embargo no sé cómo cambiar los mensajes del proceso del carro. En concreto hay un mensaje referente a la zona detectada del cliente: «Customer matched zone «Spain»
    Me gustaría traducirlo, o mejor, eliminarlo…
    Un saludo y gracias de nuevo Fernando

    1. Luis Miguel López

      De momento lo he solucionado desactivando el «Modo de depuración» en las opciones de envío…Ya no aparece el mensaje…

  8. Clara Reyes Moya

    Gracias, nunca comento sino es realmente util, llevo días resolviendo esto sin lograrlo ni con el plugin Loco pues al parecer es mi tema quien no me permite hacer la traducción.
    Muchas gracias.

    Solo una cosa. el texto inferior de privacidad de paypal es imposible traducirlo
    «Your personal data will be used to process your order, support your experience throughout this website, and for other purposes described in our. »
    Algun tip?

  9. Hola Fernando.
    El código para traducir un texto me funciona perfectamente. Pero el código para traducir varias cadenas de texto no hace nada. Entiendo que en la siguiente línea es donde hay que poner el texto antiguo y el texto nuevo, no?
    $translated_text = __( ‘Texto antiguo’, ‘Texto nuevo’ );

    Y ya está, no?, porque esto es lo que estoy haciendo. No sé cuál es el problema
    Muchas gracias por tu atención.

    1. Yo lo uso en varias instalaciones y sí funciona. Ahora bien, no va con cualquier texto de WooCommerce, hay cadenas «especiales» por decirlo así, que no se pueden traducir así

  10. Hola Fernando, gracias por esta entrada. Quería preguntarte algo, tengo loco translate y Polylang instalados en mi proyecto, aunque la mayor parte de la traducción pinta bien, tengo un pequeño lio que no logro resolver, resulta que cuando ingresas a la pagina http://tagadesigns.com/tienda/ te encuentras con el filtro «Ordenar por…» (Sort by…), esta pequeña parte no me tomo la traducción del locotranslate y no se como lograrlo, es decir, cuando un usuario seleccione idioma español, esta parte también debería mostrarse en español, pero no es así, sigue en ingles, puedes ayudarme indicándome como cambiar solo esta parte?

      1. estoy usando DIVI, con woocomerce, hice la prueba cambiando a uno de los temas por defecto de wordpress «Twenty Seventeen» y pasa igual

        1. Podrías editarlo desde la misma clase de orden de woocommerce.
          Si buscas, encontrarás que se llama, woocommerce-ordering, una vez encuentres puedes cambiarlo.
          Si no, puedes agregar las líneas de traducción a los traductores que uses.

  11. No me funcionó :C
    Hice un tema hijo y añadí el código, cambié el texto pero no sirvió.
    También ya probé cambiar la traducción de woocommerce para cambiar el texto de añadir al carrito y nada. No quiero instalar un plugin solo para eso pero no me funcionan otras cosas ¿Por qué podrá ser?

  12. Hola, genial tu tip, pero una consulta. ¿como puedo modificar un texto que llama al nombre del producto? por ejemplo:
    “Producto Demo 9” se ha añadido a tu carrito. que el origial sería: %s se ha añadido a tu carrito. pero al hacerlo, no lo cambia.

    Gracias por el apoyo a quienes estamos partiendo. Saludos 🙂

  13. Hola, buenas noches de que forma se puede poner en wocommerce el texto envio gratis junto al precio en los productos que cuentan con envio gratis ?

  14. Miguel Bustos

    Echo de menos que WooCommerce traiga esta posibilidad por defecto, ya que los textos originales pocas veces se adaptan a la realidad de una tienda. Pero bueno, el código es relativamente sencillo!!!

  15. Chicos, este es el que sí funciona para varias frases:

    add_filter('gettext',  'translate_text');
    add_filter('ngettext',  'translate_text');
    function translate_text($translated) {
             $translated = str_ireplace('SHARE ON',  'COMPARTIR EN',  $translated);
    	 $translated = str_ireplace('SHOP FILTER',  'FILTRAR',  $translated);
    	 $translated = str_ireplace('Showing all',  'Todos los',  $translated);
    	 $translated = str_ireplace('results',  'resultados',  $translated);
         return $translated;
    }
    1. Gracias, Valería,

      A fecha de hoy con Avada y modificando functions.php, a mí solo me funciona la solución que tu das, la del artículo no me da resultados.
      Pero con ‘Puede que estés interesado en…’ para ventas cruzadas, no me funciona ninguna.

      Saludos

  16. Hola! Hay manera de cambiar el texto que viene por defecto en woocommerce

    No hay métodos de envío disponibles. Por favor revisa de nuevo tu dirección, o ponte en contacto con nosotros si necesitas cualquier ayuda.

    y poner por ejemplo: Por favor llene su dirección….

    gracias si alguien me puede dar una mano agradecido !!!!

  17. Gracias Fernando! Sigo a AyudaWP desde que nació tu blog 🙂

    Me funciona perfecto todas las cadenas modificadas, la única que no me modifica (tampoco individualmente) es:

    case 'También te recomendamos' :
    		$translated_text = __( 'También te puede gustar', 'woocommerce' );

    ¿Alguien podría ayudarme? por favor!
    Estoy usando Divi, y tratándolo desde «mi propio plugin», tal como nos enseñó Fernando Tellado. Y todas las demás funciones también andan perfecto.
    Agradecida de antemano!!!!!

    1. Hola Adriana,

      A fecha de hoy con Avada y modificando functions.php, a mí solo me funciona la solución que da Valeria más arriba.
      Pero con ‘También te puede gustar’ o ‘Puede que estés interesado en…’ tampoco me funciona.
      ¿Tú sigues igual?

  18. Buen día, me gustaría cambiar el texto de un boton cuando el usuario este log in. Me podreis ayudar con este por favor?

  19. Quizás esto también pueda ayudar.

    Cuando estén haciendo sus pruebas, deben vaciar el carrito antes de refrescar la página para ver los cambios. Al menos así funcionó para mi con el widget del mini-cart.

    Éxito para todos!

  20. Hola Fernando, gracias por todo lo que compartes, una consulta existe alguna forma de cambiar el texto «Si tienes un código de cupón, por favor, aplícalo abajo.» del apartado ¿Tienes un Cupón?. La idea es que pueda añadir un texto más a eso, ejemplo «Si tienes un código de cupón, por favor, aplícalo abajo. Los cupones solo serán entregados vie web», estoy buscando pero no encuentro alguna alternativa, muchas gracias.

  21. Maravilloso.

    Es genial contar con una solución simple para un problema, en apariencia, pequeño.

    Un gusto y muchas gracias.

    … he podido sustituir el poco agradable » Solo para que lo sepas — … » de los correos procesando pedido de woocommerce por un texto más amable promotor de buenas relaciones. Pero antes he estado viendo los archivos originales y las traducciones de woommerce que cada vez lo ponen más difícil, así mucho mejor …

    …¿Habrá alguna manera de inyectar este código en cualquier archivo functions.php del tema hijo que esté activo?… creo recordar que si… junto con css y javascript único… que el usuario tenga la ultima palabra ayuda muchísimo a personalizar y mejorar los sitios y la experiencia de los usuarios.

    Gracias una vez más.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba
Ir al contenido