En muchos proyectos nos vemos con la necesidad de modificar algunos de los textos que vienen predefinidos en WordPress, bien porque nos los pida nuestro cliente, o bien porque queramos dirigirnos a nuestro público de alguna forma concreta, por ejemplo, los textos predefinidos en WordPress «tutean» al usuario, y es posible que nosotros queramos tener un tratamiento de «usted».
Por ejemplo, en el formulario de login de WordPress tenemos el texto predefinido «¿Olvidaste tu contraseña?»:
Si quisieramos cambiar este texto por «¿Olvidó su contraseña?», podríamos hacerlo con una sencilla función que aplicaríamos en el archivo functions.php de nuestro tema activo, o en nuestro propio plugin de funciones en caso de tenerlo creado.
La función en cuestión sería:
function sustitucion_textos_predefinidos($traduccion){
$palabras = array(
'¿Olvidaste tu contraseña?' => '¿Olvidó su contraseña?',
);
$traduccion = str_ireplace(array_keys($palabras), $palabras, $traduccion);
return $traduccion;
}
add_filter('gettext', 'sustitucion_textos_predefinidos');
add_filter('ngettext', 'sustitucion_textos_predefinidos');
Simplemente tenemos que meter en el array $palabras, todas las cadenas de texto que queremos sustituir, donde primero insertamos la cadena tal cual viene en WordPress:
‘¿Olvidaste tu contraseña?’ y asignamos con «=>» la cadena de sustitución ‘¿Olvidó su contraseña?’.
También podemos cambiar cualquier elemento dentro del Panel de Control de WordPress, supongamos por ejemplo, que vamos a adaptar un WordPress para que lo gestione nuestro cliente y queremos cambiar varios elementos del menú, como por ejemplo, sustituir Medios por «Imágenes», o el botón de Añadir Objeto por «Añadir Imágenes»
Solo tenemos que añadir todas las líneas que deseemos cambiar:
function sustitucion_textos_predefinidos($traduccion){
$palabras = array(
'¿Olvidaste tu contraseña?' => '¿Olvidó su contraseña?',
'Medios' => 'Imágenes',
'Añadir Objeto' => 'Añadir Imágenes',
);
$traduccion = str_ireplace(array_keys($palabras), $palabras, $traduccion);
return $traduccion;
}
add_filter('gettext', 'sustitucion_textos_predefinidos');
add_filter('ngettext', 'sustitucion_textos_predefinidos');
Como vemos en la función, todas las cadenas de texto que pasemos al array, pasarán por la función str_ireplace(), que localizará la cadena original y la reemplazará por la que le indicamos, sin tener que tocar archivos internos de WordPress ni modificar la traducción.
Espero que haya sido de utilidad el artículo y nos vemos en el siguiente post 🙂
Damian dice
Hola,
Como se pueden modificar los nombres de aquellos botos que se encuentran por defecto en las paginas porque desde las opciones hay algunos botones que no aparecen como asi tambien algunos textos.
Consultor SEO en Tijuana dice
Me acabas de salvar de un problema que tenia!
Muchas gracias por el artículo.
dani dice
Gracias, muchos blogs me salvan a mí a diario, esta es mi pequeña contribución. Saludos.
Infomercantil dice
Grande!
Ernesto dice
Hola Dani,
Gran aporte!!!
Solo comentarte que te falta cerrar el paréntesis de «str_ireplace(» en la segunda función.
dani dice
Hola, gracias por el aviso! Ya está corregido. Saludos.
Alejandro dice
ej: Detalles de Pedido #2323 este texto lo ingreso de esta forma pero no funciona: ‘Detalles de Pedido’ => ‘Detalles’,
dani dice
Puede que en este caso, al contener el texto una variable (nº de pedido) no funcione con este método, y tengas que editarlo en los archivos de traducción de WooCommerce (los archivos po/mo). En este momento no tengo tutoriales de cómo editarlos, pero hay mucha información en la red.
iñaki dice
Muy buen tutorial.
¿Se podía cambiar el enlace de estos textos? que al pulsar ¿olvidó su contraseña? nos lleve a otra página definida por nosotros.
Quiero que el texto sea «apuntarme» y dirija a la página de suscripción.
Muchas gracias
dani dice
Gracias por tu mensaje. No, la función solo afecta a la cadena de texto no a su enlace.
Para cambiar el enlace del link échale un ojo a este filtro: https://developer.wordpress.org/reference/hooks/lostpassword_url/
Saludos.
Leo dice
Excelente aporte, le dí uso al código pero hay una cadena que no cambia, cambia lo que contiene pero no la principal, me refiero a «Entradas», tendrás data sobre esto?.
Mil gracias!