Problema con [...] mostrándose como [&hellip] en WordPress

7 ago 2013, 22:54:45
Vistas: 15.1K
Votos: 0

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/

2
Comentarios

Intenta desactivar tus plugins. Si el problema desaparece, actívalos uno por uno hasta que reaparezca. Ese será tu problema. (También: … es la entidad HTML para '…'. Algo podría estar eliminando el punto y coma.)

Pat J Pat J
7 ago 2013 23:04:43

Acabo de echar un vistazo a tu sitio. ¿Cómo luce tu código para The Loop? (Probablemente estás buscando algo en los archivos PHP que comience con while( have_posts() ) : y termine con endwhile;). Si puedes pegar eso en tu pregunta, podría ayudar a diagnosticar el problema.

Pat J Pat J
7 ago 2013 23:51:58
Todas las respuestas a la pregunta 3
0

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 [&#038;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.

16 ago 2013 10:38:15
0

Hice casi lo mismo, esta fue la respuesta para mí:

// Reemplazar los puntos suspensivos predeterminados
function trim_excerpt($text) {
     $text = str_replace('[&hellip;]', '', $text);
     return $text;
    }
add_filter('get_the_excerpt', 'trim_excerpt');
13 sept 2013 15:28:06
0

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 [&hellip;] 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( '[&hellip;]', '', $text ) para WordPress 3.6+, o str_replace( '[...]', '', $text ) para versiones anteriores. También puedes combinar ambos reemplazos si lo deseas: str_replace( array( '[&hellip;]', '[...]' ), '', $text ).

10 abr 2016 04:46:29