Limitar el post excerpt length de WordPress

- enero 17, 2018

El Excerpt en WordPress es un resumen o descripción opcional de una publicación, en especial utilizada en los posts, muchos de estos excerpt son utilizados antes del leer más y también para mostrarlos como la meta descripción de cada página.

 

Donde los usamos?

    1. Puede reemplazar todo el contenido de las fuentes RSS cuando se selecciona la opción para mostrar resúmenes en Admin > Ajustes > Lectura.
    2. Según el tema de WordPress, se puede mostrar en lugares donde los resúmenes rápidos son preferibles al contenido completo ej:

– Resultados de la búsqueda
– Archivos de etiquetas (tags)
– Archivo de la categoría
– Archivos mensuales (archive)
– Archivo del Autor

Como se agrega un excerpt o extracto a una publicación?

Para agregar un extracto a una publicación, solo es necesario escribir la función Excerpt dentro de nuestra plantilla php que queremos, por ejemplo puede ser en el index.php

<?php the_excerpt (); ?>

Un extracto puede ser tan corto o largo como uno lo desee. Usualmente, dado su propósito un par de oraciones está bien. Si agrega el extracto manualmente, puede usar (algunos) formatos HTML y las etiquetas no se eliminarán.

La anterior es la forma mas básica de agregar un excerpt en WordPress el cual podemos configurar desde Admin > Ajustes > Lectura, como se muestra a continuación.

Limitar el post excerpt length de WordPress 0

Pero existen otras formas de poder limitar y controlar la longitud de nuestros Excerpt de forma fácil y con unas cuantas lineas de código.

Limitar la longitud de la publicación usando el número de palabras.

Esta es una de las soluciones mas utilizadas a la hora de limitar nuestro Excerpt y Content en WordPress, pasándole el numero de palabras máximo que deseamos mostrar cuando aparezca, lo que vamos hacer es crear dos funciones desde nuestro archivo functions.php.

//Limitar con la funcion get_the_excerpt
function excerpt($limit) {
  $excerpt = explode(' ', get_the_excerpt(), $limit);
  if (count($excerpt)>=$limit) {
  array_pop($excerpt);
  $excerpt = implode(" ",$excerpt).'...';
  } else {
  $excerpt = implode(" ",$excerpt);
  }
  $excerpt = preg_replace('`[[^]]*]`','',$excerpt);
  return $excerpt;
}

//Limitar con la funcion get_the_content
function content($limit) {
  $content = explode(' ', get_the_content(), $limit);
  if (count($content)>=$limit) {
  array_pop($content);
  $content = implode(" ",$content).'...';
  } else {
  $content = implode(" ",$content);
  }
  $content = preg_replace('/[.+]/','', $content);
  $content = apply_filters('the_content', $content);
  $content = str_replace(']]>', ']]&gt;', $content);
  return $content;
}

Para llamar estas funciones desde nuestro front solo es necesario agregarlas dentro de nuestro Loop o ciclo y llamarlas de la siguiente manera:

<?php echo excerpt('20'); ?>

<?php echo content('20'); ?>

El número 20 indica la cantidad de palabras que deseas mostrar y ya esta, puedes utilizar cualquiera de las dos dependiendo del caso.

Limitar la longitud del Excerpt por el número de caracteres

El anterior ejemplo lo realizamos limitando por el número de palabras, pero existen ocasiones en las cuales queremos ir mas al detalle y limitar por el numero de caracteres. En este ejemplo crearemos una función de manera diferente para no limitarnos, en la cual personalizaré directamente desde la misma función el numero de caracteres sin pasarcelo a la función directamente y agregándole un Leer más, todo esto lo agregaremos a nuestro archivo functions.php

function get_excerpt(){
  $excerpt = get_the_content();
  $excerpt = preg_replace(" ([.*?])",'',$excerpt);
  $excerpt = strip_shortcodes($excerpt);
  $excerpt = strip_tags($excerpt);
  $excerpt = substr($excerpt, 0, 100);
  $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
  $excerpt = trim(preg_replace( '/s+/', ' ', $excerpt));
  $excerpt = $excerpt.'... <a href="'.$permalink.'">Leer más</a>';

  return $excerpt;
}

En este caso hemos limitado la cantidad de caracteres a mostrar al número 100 y llamaremos la función desde nuestro front de la siguiente forma:

<?php echo get_excerpt(); ?>

Limitar la longitud del Excerpt por medio de un Filter de WordPress

La longitud de los extractos en WordPress por defecto es de 55 palabras. Podemos cambiar este valor por defecto sin anular la función predeterminada de the_excerpt(), para que no tenga que hacer un cambio en cada archivo y plantilla donde haya utilizado the_excerpt() de la siguiente manera:

function custom_excerpt_length( $length ) {
     return 20;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

No olvides comentar si te ha servido este pequeño manual 👍


Recibirás cada semana todas nuestras actualizaciones
Puedes estar tranquilo que nunca te enviaremos SPAM
SOBRE EL AUTOR

Desarrollador web (Wordpress Expert) PHP, HTML5, CSS3, LINUX y muchos más…

¿Tienes un proyecto en mente? Hagámoslo real

CONTACTAR
Ebook-eBook – Funciones más Útiles para WordPress

Descarga el eBook GRATIS!

eBook – Funciones más Útiles para WordPress