El extracto es un texto opcional que puedes añadir a tus entradas a modo de resumen de las mismas. Si estás usando el nuevo editor, verás que hay una opción en la barra lateral llamada Extracto:

Si no aparece, es posible que tengas que activar la opción desde los ajustes de Gutenberg. Haz clic en los puntos suspensivos de la esquina superior derecha del editor y a continuación pincha en Opciones:

Entre las opciones que aparecen, busca Extracto y actívalo:

Según cómo esté configurado tu tema, el extracto es el fragmento de texto que acompaña a tus entradas en páginas como el blog, los resultados de una búsqueda, etc. Por ejemplo, en nuestro blog puedes ver como todas nuestras entradas se presentan con su pequeño resumen asociado:

Ahora bien, ¿es obligatorio escribir siempre el extracto? Si no ponemos ninguno, ¿qué hace WordPress? Pues vamos a responder estas preguntas en lo que queda de entrada y, además, veremos qué opciones tenemos para personalizar los extractos que genera WordPress.
Cómo funcionan los extractos en WordPress
WordPress dispone de dos funciones para obtener el extracto de una entrada en concreto: get_the_excerpt
y the_excerpt
. Ambas están definidas en wp-includes/post-template.php
y si echas un vistazo a su código fuente descubrirás que the_excerpt
lo único que hace es un echo
de get_the_excerpt
(después de pasarlo por un filtro específico: the_excerpt
). Así que, a efectos prácticos, lo único que debes entender para saber cómo funcionan los extractos en WordPress es la función get_the_excerpt
.
Tal y como puedes ver, get_the_excerpt
es una función extremadamente sencilla:
function get_the_excerpt( $post = null ) {
// ...
$post = get_post( $post );
if ( empty( $post ) ) {
return '';
}
// ...
return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post );
}
Básicamente, obtiene la entrada que le pasas como parámetro (o, si no le pasas ninguna, utiliza la entrada que haya cargada en el loop de WordPress ) y devuelve como resultado el valor del atributo post_excerpt
, el cual es, precisamente, el extracto que hayas escrito en el editor.
Entonces parece que ya hemos resuelto la duda, ¿no? Si no escribimos ningún extracto, WordPress no pintará nada…
No tan rápido, amigo.
Fíjate que, en realidad, esta función no escribe directamente el valor de post_excerpt
, sino que, de nuevo, lo pasa por un filtro antes: get_the_excerpt
. Así que si hay acciones asociadas a ese filtro, es posible que el resultado que acabe saliendo sea diferente de lo que esperamos.
Y, efectivamente, podemos comprobarlo por nosotros mismos. Si dejamos una entrada con contenido sin extracto, esto es lo que veremos en nuestra web:

Las primeras palabras de nuestro contenido seguidas de unos puntos suspensivos.
La función wp_trim_excerpt
Si realizamos una búsqueda rápida en el código fuente de WordPress veremos que, por defecto, solo hay una única acción asociada al filtro get_the_excerpt
. En concreto, en el fichero wp-includes/default-filters.php
vemos que se añade la función wp_trim_excerpt
.
Según la documentación de WordPress, wp_trim_excerpt
se encarga de generar un extracto a partir del contenido de la entrada «si es necesario». Y ahí está la clave: la función considera que «es necesario» si no existe ya un extracto (lo que, en general, es equivalente a decir que el usuario no ha escrito un extracto en el editor). Esto lo puedes ver en el código fuente de la función:
function wp_trim_excerpt( $text = '', $post = null ) {
$raw_excerpt = $text;
if ( '' == $text ) {
$post = get_post( $post );
$text = get_the_content( '', false, $post );
// [...] » Genera el excerpt a partir del texto
}
return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt );
}
¿Ves? Si no hay un extracto (parámetro $text
), recupera el contenido de la entrada actual (get_the_content
de $post
).
A partir de este punto podemos ir tirando del hilo y ver cómo genera exactamente el extracto a partir del contenido (algo que he omitido en el fragmento que he compartido en esta entrada, pero que puedes ver en el enlace al código fuente original). Pero, en definitiva, tenemos la respuesta en la propia documentación:
Devuelve un máximo de 55 palabras con puntos suspensivos al final.
Este límite se puede modificar usando el filtro
Documentación deexcerpt_length
. Los puntos suspensivos se pueden cambiar usando el filtroexcerpt_more
.wp_trim_excerpt
Así que ahora ya tienes a tu alcance todas las herramientas para personalizar totalmente los extractos automáticos que genera WordPress por ti.

Nelio Content
Estoy tan contento con Nelio Content que parece que me hayan pagado para hablar bién de él… pero es que también a ti te encantará: funciona como prometen, la programación automática de mensajes es increíble, la calidad/precio no tiene parangón y su equipo de soporte se siente como si fueran parte del tuyo.

Panozk
Cómo personalizar los extractos automáticos
Veamos algunos ejemplos de cómo podemos usar los filtros que hemos visto a lo largo de la entrada de hoy para personalizar los extractos automáticos. Por cierto, recuerda que para poder añadir cualquiera de estas modificaciones en tu web deberás crear un plugin como te contamos aquí.
a) Cómo cambiar el número de palabras que quiero en mis extractos
Esta es una de las más sencillas. Ya hemos visto que tenemos a nuestra disposición el filtro excerpt_length
para escoger cuántas palabras queremos que tengan nuestros extractos, así que vamos a usarlo:
function nelio_100_word_excerpts( $length ) {
if ( is_admin() ) {
return $length;
}
return 100;
}
add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 );
Fíjate que lo primero que hacemos en nuestra función es añadir un pequeño control que garantice que nuestro cambio únicamente lo vamos a aplicar en el front-end de la web. Si estamos en el escritorio de WordPress (is_admin
), mejor no tocamos nada. Y luego todo es cuestión de devolver siempre el número mágico que queramos. En mi ejemplo: 100 palabras.
b) Cómo cambiar el texto que aparece después de un extracto automático
Esta también está chupada, porque ya hemos visto que existe un filtro para ello:
function nelio_clickable_read_more( $more ) {
if ( is_admin() ) {
return $more;
}
return sprintf(
'<a href="%s">¡Me interesa!</a>',
esc_url( get_the_permalink() )
);
}
add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );
En este caso lo que hacemos es devolver (cuando toca) un enlace con el texto «¡Me interesa!» que lleva al visitante a la propia entrada. ¡Fácil y sencillo, amigos!
c) Cómo limitar la longitud de un extracto a un cierto número de caracteres
Si te has fijado, la función wp_trim_words
tiene un filtro homónimo que podemos usar para modificar el extracto final que se genera. Así que vamos a usarlo:
function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) {
if ( is_admin() ) {
return $excerpt;
}
if ( '' !== $raw_excerpt ) {
return $excerpt;
}
return mb_substr( $excerpt, 0, 140 );
}
add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 );
El filtro wp_trim_words
aplica tanto a los extractos automáticos como a los extractos que ha definido el usuario. En mi ejemplo, a mí me interesa únicamente modificar aquellos extractos que se han generado automáticamente, así que tengo que añadir alguna condición adicional. Si recuerdas, wp_trim_words
únicamente genera un extracto automático si el original estaba vacío, así que basta con hacer esta comprobación para obtener el resultado deseado.
Por otro lado, merece especial mención el uso de la función mb_substr
en lugar de la clásica substr
. El motivo es sencillo: si en tu blog escribes en un idioma diferente al inglés es posible que aparezcan caracteres multi-byte… y con substr
las cosas pueden fallar. Te dejo aquí un enlace a la documentación de PHP.
d) Cómo crear extractos con el primer párrafo del contenido
Y ya para acabar, un ejemplo de cómo crear un extracto usando exactamente el primer párrafo de tu entrada. En este caso, voy a dejar que seas tú el que entienda qué estoy haciendo en el código:
function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) {
if ( is_admin() ) {
return $excerpt;
}
if ( '' !== $raw_excerpt ) {
return $excerpt;
}
$content = apply_filters( 'the_content', get_the_content() );
return substr( $content, 0, strpos( $content, '</p>' ) + 4 );
}
add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );
En definitiva
La gran potencia de WordPress radica en su extensibilidad. Hoy hemos visto en detalle cómo WordPress genera los extractos de tus entradas y todos los filtros y funciones que te ofrece para poder personalizar y adaptar el resultado final a tus necesidades.
Espero que te haya gustado la entrada de hoy. Compártela con tus amigos para que más gente conozca las ventajas de WordPress!
Imagen destacada de Aaron Burden en Unsplash.
Deja una respuesta