Cambiar el excerpt por texto con formato
Una de las cosas que todo desarrollador en WordPress se va a encontrar alguna vez es la situación / cliente / especificación / necesidad, de cambiar el excerpt de las entradas.
Como ya definimos en las etiquetas de plantilla, el excerpt es una función que nos permite mostrar un contenido de resumen para una entrada, generalmente con un número determinado de palabras, 55, modificables con un hook (cosa que no estudiaremos en esta entrada), pero de forma normal al excerpt no se le puede dar formato, lo cual puede ser contraproducente si se requiere que lo tenga, como negritas, saltos de página, enlaces…
Bien para lograr esto lo que hay que hacer es engañar un poco a WP, para ello vamos a crear una función content que no sustituye a la anterior, simplemente nos definiría la parte de contenido que queremos mostrar.
En el archivo functions.php de nuestro tema vamos a escribir la siguiente función. (Yo recomiendo hacerlo al final del archivo poniendo una marca en un comentario para saber donde empiezan nuestras funciones y diferenciandolas así de las del tema en cuestión)
function the_content2($longitud) { $contenido = get_the_content(); $content = substr($contenido, 0 , $longitud); echo nl2br($content); }
Vemos como declaramos nuestra función the_content2 que recibe un parámetro que es la longitud en caracteres que va a tener nuestro contenido.
A continuación guardamos en una cadena todo el contenido de la entrada, la cual cortamos con la funcion substr() desde la posición cero hasta la longitud pasada en el parámetro.
Podríamos pensar que de esta forma ya hemos logrado cambiar el excerpt y hasta cierto punto es cierto, pero aunque hemos logrado poner las negritas, enlaces… no hemos sustituido los saltos de línea, para ello necesitamos utilizar la función nl2br() que transforma nuestra cadena para que se formatee de este modo.
Ya que tenemos nuestra función ahora hay que llamarla desde el bucle, para ello donde queramos que aparezca el contenido que hemos seleccionado (generalmente en el index), lo único que hay que hacer es poner la llamada a nuestra función de la siguiente forma:
the_content2('200');
Así se mostraran los 200 primeros caracteres de la entrada que se encuentre en el bucle con el formato que le hayamos puesto, y tan solo hay que modificar este número si queremos que sea diferente.
Espero que os haya servido y que podáis cambiar el excerpt para poner los resúmenes de forma mucho más atractiva.