Como ya sabes, WordPress te da la posibilidad de mostrar, en las páginas de archivo, el post completo o bien solamente un extracto. Sin embargo no se puede configurar cuál será la longitud del extracto mostrado por WordPress.
Pero que la opción no esté en los menús no significa que no pueda hacerse. De hecho en este artículo vamos a ver qué formas tenemos de establecer la longitud del extracto en WordPress, tanto manualmente como mediante código.
Tabla de contenidos
Qué es el extracto y cuándo se muestra
El extracto no es más que un resumen o una pequeña descripción del contenido de una entrada, que WordPress puede mostrar en las páginas de archivo:
- Página de categoría
- Página de etiquetas
- Resultados de búsquedas
- Archivo mensual
- Archivo de autor
Y ojo porque he dicho puede mostrar, ya que es algo totalmente opcional… para el creador de la plantilla que estés usando. Por lo general, mostrar el extracto o la entrada completa depende de si en el loop se ha utilizado la función the_excerpt () o the_content ().
Por tanto, si tu plantilla muestra el extracto y quieres mostrar la entrada completa, o al revés, tendrás que editar la plantilla. Por supuesto, en estos casos lo más recomendable es hacer uso de un child theme o tema hijo, según explico en esta entrada.
Establecer el contenido del extracto manualmente
Pero ése no es el tema de hoy y lo trataré en otro artículo. Porque lo que queremos ver hoy es cómo controlar el contenido de ese extracto. Por defecto WordPress utiliza para crearlo automáticamente las primeras 55 palabras del post pero, como vamos a ver hoy, podemos hacer algunas cosas para cambiar eso.
Extracto manual
Lo primero que podemos hacer es crear un extracto manual. Es algo más trabajoso, pero nos da un control absoluto sobre el contenido del extracto. Para ello, lo primero de todo, hay que hacer visible la caja de edición del extracto.
Así que sólo tienes que ir a una entrada y, en la esquina superior derecha, pulsar en la pestaña Opciones de pantalla, y cuando éstas se desplieguen activar la correspondiente al extracto. Puedes verlo en esta imagen:
Una vez hecho esto aparecerá una caja de edición llamada Extracto bajo el editor principal de la entrada. Cualquier contenido que pongas ahí se utilizará como extracto, por largo que sea. Si lo dejas vacío se mostrará el extracto automático (o bien, la entrada completa, según esté hecha la plantilla).
Extracto vs. adelanto: el tag Mostrar más
Aunque en realidad esto no es del todo cierto. Si hay un extracto manual, éste se mostrará, sí; pero si no lo hay, antes de crear uno automático WordPress hará una última comprobación: va a mirar si existe un adelanto.
Un adelanto es la parte inicial de la propia entrada que nosotros elegimos para que aparezca en lugar del extracto. ¿Cómo elegirla? Pues haciendo uso de la etiqueta More o Mostrar más.
Esta etiqueta puedes insertarla automáticamente en el lugar donde quieras que se sitúe el límite del adelanto utilizando el botón correspondiente de la barra de edición, que es el que puedes ver en esta captura de pantalla:
También, si prefieres, puedes insertarla en la ventana de HTML con la tag:
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Controlar el extracto mostrado mediante código
Una vez que WordPress ha comprobado que no existe un extracto manual y que no está presente la etiqueta More, decide crear un extracto automático.
Y para ello, como decía al principio, coge las primeras 55 palabras de la entrada y les añade al final un […]. Ya está, donde quede el corte, ha quedado. Son 55, ni una más, ni una menos.
Pero nosotros podemos cambiar esto utilizando una sencilla función. Como de costumbre, se trata de colocarla al final del archivo functions.php de tu plantilla (realiza siempre antes copia de seguridad) o, mucho más recomendable, usando un plugin de funciones personalizado, tal y como explico en esta entrada.
Limitar el número de palabras
Cambiar el número de palabras que entrarán en el extracto es, como decía, muy sencillo, gracias a que WordPress pone a nuestra disposición un filtro para hacerlo. Básicamente, y sin utilizar tecnicismos, basta con usar esta función:
function ejr_limite_extracto ($longitud) {
return 55;
}
add_filter ('excerpt_length', 'ejr_limite_extracto', 999);
Y ya está, así de sencillo. Hombre, si pones la función tal y como estará ahí no cambiará absolutamente nada. La gracia es que puedes cambiar ese return 55; por el número de palabras que quieras que incluya el extracto.
Bonus: quitar el […] del final o sustituirlo por otra cosa
Pero aún podríamos ir un poco más lejos, y cambiar ese soso […] que no invita a nada por una llamada a la acción algo más contundente. Por ejemplo un enlace con el texto Lee la entrada completa o Continúa leyendo.
Para eso necesitamos otra función, también muy sencilla, gracias a otro filtro de WordPress:
function ejr_nuevo_excerpt ($more) {
global $post;
return 'Lee la entrada completa';
}
add_filter ('excerpt_more', 'ejr_nuevo_excerpt');
Y listo, ya ves que sencillo es personalizar los extractos, tanto si los haces manualmente como de forma automática, adaptándolo a nuestras necesidades.
Como siempre, para cualquier pregunta, duda, consulta o lo que quieras, tienes a tu disposición tanto los comentarios como el formulario de contacto.
Jorge dice
Hola Enrique,
¿Sabes cómo podría aplicar el extracto (recortar el texto) solamente en el email que reciben los suscriptores dejando la entrada completa en el blog?
Muchas gracias.
Jorge
Enrique J. Ros dice
Hola Jorge
Eso depende de qué plataforma estés utilizando para el envío de mails, normalmente en la configuración deberías tener la opción de enviar el artículo completo o sólo el resumen.
Un saludo.
Jorge dice
Las notificaciones (en forma de email) que les llegan a mis suscriptores las hace automáticamente WordPress, pero no encuentro donde tocar esos ajustes. Muchas gracias!
Enrique J. Ros dice
Ah, bueno, acabo de ver por tu enlace que estás en wordpress.com
Pues nada, ahí hay lo que hay y tienes que aguantarte con lo que te dan; todo lo que explico aquí es para wordpress.org 🙂
Un saludo.
Ricardo dice
Hola, muy interesante tu artículo.
Tengo un problema con el extracto. El automático, me sirve para los resúmenes que muestra la página en la home o en otras portadas, pero es demasiado corto para la newsletter que envío por mailchimp y viceversa, ¿Hay alguna manera de personalizarlos?.
Muchas gracias por tu tiempo y tus conocimientos.
Enrique J. Ros dice
Hola Ricardo
No lo he probado pero debería bastar con filtrar la longitud (el código que indico en el apartado Limitar el número de palabras) pero usando un condicional como is_archive(). De esta forma la longitud establecida puede ser una, y la que se muestre en la página de blog, categorías, etc, puede ser otra diferente.
Un saludo,
Anonimo dice
Hola Enrique
Muchas gracias por tu ayuda, gracias a ti he conseguido quitar los fastidios tres puntos entre corchetes de mis imágenes en wordpress y dejarlo sin nada.
Gracias de nuevo, eres un crack.
Enrique J. Ros dice
Gracias a ti por tu comentario, me alegra que te haya sido de ayuda 🙂
vi87 dice
hola Enrique,
Este post ya es un poco antiguo, pero espero me puedas contestar… yo tengo una página en la que se me ha duplicado el «leer más», uno es que lo hace la propia plantilla y el otro el «more» del mostrar contenido completo. El caso es que quiero quitar uno de los dos para todas las entradas, es posible quitar el «more» sin tener que ir una a una de las publicaciones?
Enrique J. Ros dice
Hola
Ese «more» te lo está poniendo la plantilla. Consulta con el soporte de ésta, son quienes mejor te pueden ayudar.
Un saludo
Dani dice
Hola Enrique,
gracias por el articulo,
que habría que poner de código para que nos e muestre el extracto ,
Gracias de antemano y un saludo
Aldo dice
Hola Enrique.
Tengo un sitio basado en páginas y entradas.
La función que has publicado para la longitud del extracto aplica para las entradas, ¿qué filtro pudiera utilizarse para la longitud del extracto de las páginas?
Saludos.