Come Modificare il “the_excerpt” di WordPress

Pubblicato da Yuri Carlenzoli | 11 Aprile 2009

In un blog basato su wordpress si può visualizzare il post completo oppure una parte di esso, questa funzione/tag si chiama the_excerpt, ecco come modificarla.

hack-modificare-the-excerpt-wordpress

Era un po che volevo mettere il riassunto dei post che vengono dopo il primo in homepage e nelle categorie per velocizzare il blog, però non mi piaceva come faceva questo riassunti, adesso che ho scoperto come hackerarlo condivido come fare, sicuramente verrà molto utile.

Ci sono un po di plugin che permettono la personalizzazione della funzione/tag the_excerpt in wordpress però io mi sento soddisfatto 50 volte di più se riesco ad "hackerare" il codice e fare tutto a mano.

Per chi è alle prime armi ecco cos'è il the_excerpt, in italiano ed in inglese, una piccola descrizione del problema/fastidio che mi dà il the_excerpt originale di wordpress poi passo al codice.

La cosa che non mi è mai piaciuta nel tag the_excerpt è che, quasi tutti lo usano però mettono l'immagine prima del post, forse appunto per questo, io mettendo un'introduzione prima dell'immagine l'immagine non si visualizzava e questo non mi andava bene perchè sembravano post "vuoti", adesso che sto facendo il mio metodo di scrivere non lo cambio, cambio wordpress 🙂 .

Ecco allora come hackerare il the_excerpt nel codice di wordpress

Il codice che gestisce il tag the_excerpt è nel file formatting.php presente nella cartella wp-includes di wordpress, per wordpress 2.7.1 precisamente è alla riga 1482, il codice è:

function wp_trim_excerpt($text) {
if ( '' == $text ) {
$text = get_the_content('');

$text = strip_shortcodes( $text );

$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = apply_filters('excerpt_length', 55);
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '[...]');
$text = implode(' ', $words);
}
}
return $text;
}

Spiego dove ho modificato/si può modificare il codice per personalizzare il tag the_excerpt:

La linea $excerpt_length = apply_filters('excerpt_length', 55); precisamente il numero 55 definisce quanti caratteri possono/devono essere visualizzati.

La linea array_push($words, '[...]'); definisce cosa deve venire visualizzato dopo il riassunto, è possibile scrivere [...Continua] come ho fatto io, "leggi tutto" o quello che si vuole.

La parte che ritengo più importante è la linea $text = strip_tags($text); che dice di visualizzare solo il testo, qui è possibile definire che tag html è possibile visualizzare nel testo, per le immagini basta mettere $text = strip_tags($text, '<img>' );, tutto qui.

Una volta aver modificato la funzione the_excerpt bisognerà ovviamente inserire il tag nel tema per provarlo, dovrei fare un'altro post, per farlo fate riferimento all'ottimo post di blogg'R.

Purtroppo queste modifiche siccome sono fatte nel core di wordpress come quelle fatte per togliere il nofollow dell'autore del blog quando si aggiorna wordpress vanno perse, bisogna segnarsi tutto se si vuole agire in questo modo.

3 commenti su “Come Modificare il “the_excerpt” di WordPress

  1. Fabio

    veramente ottimo anche se è meglio creare una filtro nel file functions.php. In ogni caso trovo interessante text = strip_tags($text), dove dici che è possibile abilitare l'HTML. Come sappiamo per impostazione predefinita non vengono visualizzati tag html (link ecc...), ma secondo i miei test modificando la stringa in questo modo text = strip_tags($text, '') non si risolve il problema. Hai qualche soluzione in merito ?

  2. yuri Autore del post

    Il codice che c'è nell'articolo funziona Fabio...la soluzione in merito 🙂 , controlla anche nel template, magari vengono "soprascritte" le impostazioni, comunque preferisco inserire la modifica nel core anche se ci metto 2 minuti in più ad installare WP spreco meno risorse dell'hosting 😉

    Ciao,
    Yuri.

  3. Fabio

    Ho risolto ho aggiunto e tutte le limitazione del the_excerpt sono sparite, ottimo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.