Seleccionar página

Cómo cambiar longitud extractos WordPress (excerpt)

por | Ene 19, 2018 | Wordpress

Índice de contenidos

Cómo cambiar longitud extractos WordPress: script modificar excerpt

Conoceremos las distintas funciones de WordPress para mostrar el contenido de post o páginas. Aprenderemos a diferenciar entre los extractos o resúmenes de contenido automático y los extractos manuales o personalizados. Por último, nos centraremos en el propósito de este artículo: «cambiar longitud extractos WordPress», para ello implementaremos algunos códigos que puedes añadir fácilmente a tu tema. Encontrarás códigos para modificar la longitud de extractos manuales y modificar la longitud de extractos automáticos.

Qué son los extractos en WordPress

La palabra «extracto» en el contexto de WordPress significa resumen y se refiere a la forma de mostrar el contenido de los post en WordPress. Contenido completo o contenido resumido.

Cuando mostramos el contenido de nuestras entradas en las distintas páginas de nuestra web, podemos mostrar todo el contenido (the_content()) o solo una parte del mismo (the_excerpt()).

Según el tema que tengas instalado en WordPress, verás que algunas plantillas hacen uso de la función the_excerpt para mostrar un resumen de la entrada o the_content para mostrar todo el contenido. Por ejemplo, por norma general el archivo single.php hace uso de la función the_content() y muestra todo el contenido del post, y el archivo page-blog.php suele invocar a la función the_excerpt para mostrar una porción del contenido. Encontrarás estás funciones dentro del loop de la plantilla.

Ejemplo plantilla WP funcion the excerpt

Ejemplo de uso de la función the_excerpt() en una plantilla de un tema WordPress

Vamos a profundizar en el uso de la función the_excerpt().

Tipos de extractos WordPress: extractos automáticos, extractos manuales y tag more

Extracto manual

Lo tenemos que definir manualmente desde el administrador de WordPress, en el editor de entradas. Si tu tema soporta extractos manuales, primero tienes que activarlo en el editor de entradas en «Opciones de pantalla».

Para activarlo vamos al administrador y pulsamos sobre el menú Entrada  >> Añadir entrada y abrimos las opciones de pantalla.

Extracto Manual en WordPress

Marcas la casilla de Extracto. Cierras las opciones de pantalla. Verás debajo de la edición de contenido del post una nueva caja para editar tu extracto. Escribe un resumen de tu entrada, un texto atractivo o una llamada a la acción.

Etiqueta/tag more (<!–more–>)

Con la etiqueta «more», limitamos la cantidad de contenido que queremos que se muestre como extracto de una entrada. Su uso es muy sencillo; primero escribimos el contenido o parte del contenido de nuestro post, luego nos situamos con el ratón al final del contenido que queremos mostrar y por último pulsamos sobre el botón del editor que inserta la etiqueta «more».

Insertar etiqueta more

En esta imagen puedes observar el aspecto de la etiqueta en la ventana de edición visual.

Etiqueta more en el editor visual

En esta imagen puedes observar el aspecto de la etiqueta en la ventana de edición HTML.

Etiqueta more en la ventana de edición HTML

Extracto automático

El nombre ya nos está indica que se crea automáticamente desde WordPress. Su funcionamiento es recoger las primeras 55 palabras del contenido de un post y mostrarlas añadiendo al final […]. Su tamaño está definido de antemano, para modificarlo necesitamos añadir una función a nuestro archivo functions.php que os enseñaré en este post.

Cómo funciona the_excerpt en WordPress

Si en alguna plantilla del tema se llama a la función the_excerpt(), WordPress comprueba si existe un extracto manual, si existe lo muestra, en caso contrario busca la etiqueta tag: <!–more–> para mostrar la porción de texto limitada por esa etiqueta, si tampoco existe la etiqueta «more» entonces muestra un extracto automático, es decir, muestra las primeras 55 palabras del contenido de tu entrada y elimina el formato e imágenes.

Funcionamiento the_excerpt en WordPress

Modificar con código PHP la longitud de los extractos en WordPress

Todos los script de código que vamos a ver a continuación, se deben insertar en el archivo functions.php de tu tema. El archivo functions.php se encuentra ubicado en la siguiente ruta: tusitio/wp-content/themes/tutema/functions.php

Además según el código que quieras emplear, deberás modificar algunas plantillas PHP de tu tema. Recuerda que cualquier modificación que hagas directamente en los archivos de tu tema, se perderá cuando actualices el mismo. Para evitar que esto ocurra, debes trabajar con TEMAS HIJOS. En este blog tienes varios artículos que te ayudarán a instalar y trabajar con un tema hijo.

Código para cambiar la longitud de los extractos automáticos

OJO -> Este código sólo funciona si no trabajas con extractos automáticos. Si trabajas con extractos manuales debes ir al siguiente apartado de este artículo. Encontrarás una función interesante que es capaz de trabajar con los extractos manuales y si no están definidos crear un extracto automático con la longitud personalizada.

El primer código que vamos a ver sirve para modificar los extractos automáticos a un número determinado «x» que será el mismo para toda tu web. Es decir, es una función estática.

function cambiar_limite_excerpt_estatico($limite) {
	return 70;
}
add_filter ('excerpt_length', 'cambiar_limite_excerpt_estatico', 999);

En este código empleamos el filtro de WordPress excerpt_length que admite como parámetro un entero que en la función hemos denominado $limite. Mediante el filtro estamos modificando la longitud inicial de the_excerpt de 55 a 70 palabras.

El siguiente código, mejora el script anterior ya que nos permite tratar la variable $limite dentro de la función. 

function cambiar_limite_excerpt_dinamico($limite) 
{
        if (!$limite) // si no se pasamos limite
        {
	    return 70; //se muestran las primeras 40 palabras
        }
        else //si pasamos limite
        {
             return $limite; //se muestra el num palabras indicado
        }
}
add_filter( 'excerpt_length', 'cambiar_limite_excerpt_dinamico', 999 );

Para usar esta función debes modificar las plantillas de tu tema, sustituye la llamada a la función the_excerpt() por el nombre de la nueva función cambiar_limite_excerpt_dinamico(30).

Recuerda que el filtro excerpt_length solo se aplica con extractos automáticos, nunca funcionará para modificar el tamaño si trabajas con extractos manuales.

Código para cambiar la longitud de los extractos manuales o personalizados

Recuerda que las funciones anteriores solo trabajan con extractos automáticos. Si tu blog tiene definidos extractos manuales o personalizados, debes utilizar la siguiente función para recortar los extractos manuales;

function wp_trim_all_excerpt($text) {
global $post;
   $raw_excerpt = $text;
   if ( '' == $text ) {
      $text = get_the_content('');
      $text = strip_shortcodes( $text );
      $text = apply_filters('the_content', $text);
      $text = str_replace(']]>', ']]&gt;', $text);
   }

$text = strip_tags($text);
$excerpt_length = apply_filters('excerpt_length', 60);
$excerpt_more = apply_filters('excerpt_more', ' ' . ' [...]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); 

return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); 
}

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wp_trim_all_excerpt');

Estamos empleando el filtro get_the_excerpt, a partir de ahora si en tu tema se llama a la función the_excerpt() el código que se ejecuta es este. La longitud de tus extractos será de 60 palabras.

Otros script interesantes para modificar the_excerpt

Los extracto automáticos, terminan de manera predeterminada con los siguientes caracteres; […]. Vamos a modificar esto por el texto «Leer más…»

function resumen_con_leer_mas() {
       global $post;
       return '<a href="'. get_permalink($post->ID) . '"> Leer más...</a>';
}
add_filter('excerpt_more', 'resumen_con_leer_mas');

Copia y pega el código en tu archivo functions.php. Ahora cada vez que tu plantilla muestre un extracto al final agregará un enlace al post completo con el texto «Leer más…»

Encontrarás más información sobre la función the_excerpt en: https://developer.wordpress.org/reference/functions/the_excerpt/

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *