A partir de la versión 5.2 de WordPress se sustituye en los archivos de traducción las comillas altas (“”
), por las comillas angulares o españolas («»
), esto se realiza automáticamente, sin embargo en este artículo veremos cómo cambiar estas comillas.
Generalidades
WordPress tiene una función llamada wptexturize, por defecto sustituye comillas por comillas tipográficas, además de hacer otras sustituciones de caracteres. En la siguiente imagen vemos algunos ejemplos:

Es decir, cuando agregas contenido a WordPress algunos caracteres son transformados de manera automática, además para cada idioma se puede definir igualmente cual será la sustitución de estos caracteres.
Reemplazando las comillas españolas
Si sólo te interesa cambiar las comillas entonces tienes dos opciones, usar un plugin de traducción como Loco Translate, ubicar las traducciones de WordPress y realizar el cambio.
La otra opción es a través de código, en un artículo anterior habíamos visto Cómo cambiar los textos de traducción en WordPress, sin embargo en este caso el filtro que usaremos será diferente ya que estos caracteres de comillas se basan en un contexto.
add_filter('gettext_with_context', 'dcms_change_quotes_traduction_text', 20, 4);
function dcms_change_quotes_traduction_text($translation, $text, $context, $domain){
if ( $translation == '«' && $context='opening curly double quote' ) {
$translation = '"';
}
else if ( $translation == '»' && $context='closing curly double quote' ) {
$translation = '"';
}
return $translation;
}
En el código anterior:
- Usamos el hook gettext_with_context el cual hace referencia a la función dcms_change_quotes_traduction_text
- Realizamos la condicional con el argumento $translation para comparar el caracter a reemplazar
- Además comparamos el argumento $context para mayor precisión
- Si cumple la condición reemplazamos el caracter
- Finalmente retornamos el argumento modificado
Eliminar todos los reemplazos de caracteres
Con el siguiente código se puede deshabilitar la funcionalidad de wptexturize() por lo que ya no realizará ningún tipo de reemplazo de caracteres.
add_filter( 'run_wptexturize', '__return_false' );
En el código anterior:
- Usamos el hook run_wptexturize
- Directamente retornamos falso a través de la función auxiliar de WordPress __return_false
Conclusión
Como hemos podido comprobar puedes cambiar el comportamiento de la función wptexturize que reemplaza caracteres, ya sea deshabilitándola totalmente, o usando las funciones de traducción para reemplazar sólo los caracteres que requieras.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.