Martes, 16 de mayo de 2017

Hace cinco años ya hablábamos de cómo mostrar el excerpt (resumen) de forma automática y en esa ocasión recomendábamos el plugin Advanced Excerpt para mostrar algo más que texto plano en el resumen de nuestras entradas.

Desde entonces el autor del plugin ha ido actualizando hasta llegar a la versión actual (4.2.3) pero en el camino se olvidó de mantener la funcionalidad de la opción "Remove shortcodes from the excerpt. (recommended)".

¿Y cuál es el problema? Por lo pronto, digamos que es conveniente eliminar los shortcodes del resumen pero no podemos hacerlo debido a dicho error en el plugin.

En segundo lugar, puede ocurrir que en el resumen aparezca texto que no deseemos que lo haga. Por ejemplo, la leyenda (caption) de una imagen. Y eso es lo que sucede cuando la imagen está colocada en la parte superior de la entrada. En concreto, aparecerá siempre y cuando ese texto se encuentre dentro del rango de palabras que hayamos marcado en el plugin para mostrar en el resumen.

Cuando insertamos una imagen con leyenda es como si utilizáramos un shortcode ya que el código comienza con un corchete. La imagen propiamente dicha no aparece porque su etiqueta es <img> y ésta sí la neutraliza el plugin. Sin embargo, la leyenda se mantiene entre corchetes por lo que sí se muestra en el resumen.

Veamos dos imágenes para ilustrar el problema:

Advanced excerpt. Imagen en la parte superior de una entrada
Imagen en la parte superior de una entrada
Advanced excerpt. Resumen en el index. Se aprecia el error (la leyenda no debería salir)
Resumen en el index. Se aprecia el error (la leyenda no debería salir)

¿Cómo podemos solucionar el problema? Muy fácil:

1 ) Editamos el archivo "advanced-excerpt.php" que se encuentra en la carpeta "class" (no confundir con el archivo del mismo nombre que se encuentra en la raíz del plugin).

2) Buscamos las líneas 242 y 243

$text = get_the_content( '' );
$text = apply_filters( 'the_content', $text );

y las sustituimos por

$text = get_the_content( '' );
if(1 == $no_shortcode)
$text = strip_shortcodes($text);
$text = apply_filters('the_content', $text);

De esta forma, los shortcodes serán eliminados del resumen (y la leyenda dejará de mostrarse) si marcamos la opción "Remove shortcodes from the excerpt. (recommended)".

ACTUALIZACIÓN SEP/2018: la versión 2.4.5 resuelve este problema.