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!

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(36 votos, promedio: 4.8)

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

41 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!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido