Problema con [...] mostrándose como [&hellip] en WordPress
Hay un problema con mi sitio de WordPress, en lugar de [...] me aparece [&hellip] en todas partes. Ya cambié el charset a UTF-8 pero el problema persiste. Agradecería cualquier ayuda.
Aquí está el enlace al sitio web: http://theappjuice.com/

Estaba muy frustrado con este problema (y decepcionado de que el OP no nos contara cómo lo solucionó, ya que puedo ver en su sitio que lo hizo... Quizás simplemente cambió de tema).
Por si acaso, los puntos suspensivos en un momento se mostraban correctamente. Pero alguna actualización debió romperlo.
Mis extractos se mostraban así:
el equipo involucrado [&hellip
y el código fuente se renderizaba así:
el equipo involucrado [&hellip</p>
mientras que esperaba que se mostraran así:
el equipo involucrado ...
Modifiqué y jugué con formatting.php y default-filters.php sin éxito.
Finalmente, deduje que debía estar relacionado con el tema. Quizás sí, quizás no, pero fue ahí donde finalmente pude solucionarlo.
Encontré esta función en el functions.php de mi tema:
// Eliminar [...]
function trim_excerpt($text) {
return rtrim($text,'[...]');
}
La actualicé a:
// Eliminar [...]
function trim_excerpt($text) {
return $text;
}
Realmente no quería los corchetes alrededor de los puntos suspensivos, así que mi versión final quedó así:
// Eliminar [...]
function trim_excerpt($text) {
$text = str_replace('[', '', $text);
$text = str_replace(']', '', $text);
return $text;
}
Ahora mis extractos muestran correctamente los puntos suspensivos, al menos como yo quería que se mostraran.
Espero que esto ayude a cualquiera que se enfrente a este problema.

Para aclarar por qué sucedió, es porque la notación rtrim( $text, '[...]' )
utilizada para eliminar los puntos suspensivos predeterminados en algunos temas es incorrecta.
Según la descripción de la función trim()
, el segundo argumento se trata como una lista de caracteres, no como una cadena. Además, [...
se trata como un rango de caracteres ASCII desde el punto (código 2E) hasta el corchete de apertura (código 5B). Entonces, en lugar de la subcadena [...]
, el código en cuestión elimina cualquier carácter que caiga dentro de ese rango (incluido el punto y coma, código 3B), así como el corchete de cierre.
En WordPress 3.6, [...]
se cambió a […]
para una mejor tipografía.
Eso no es un problema en sí mismo, sin embargo rtrim( $text, '[...]' )
corta los dos últimos caracteres de esa cadena, dejando solo [&hellip
.
La solución es usar str_replace( '[…]', '', $text )
para WordPress 3.6+, o str_replace( '[...]', '', $text )
para versiones anteriores. También puedes combinar ambos reemplazos si lo deseas: str_replace( array( '[…]', '[...]' ), '', $text )
.
