Modificare la funzione the_excerpt() di WordPress
Aug
20090
La funzione the_excerpt() viene utilizzata da WordPress per visualizzare un sommario degli articoli, solitamente viene richiamata nella visualizzazione degli archivi o delle categorie di un blog. Ma ipotizzando che si voglia visualizzare i sommari degli articoli direttamente nella pagina iniziale, i limiti di tale funzione si notano subito.
Prima di tutto the_excerpt() ignora del tutto ogni tipo di tag HTML , ciò comporta che ogni formattazione o immagine presente nel testo dell’ articolo originale non verrà visualizzato nel sommario, a meno che tale sommario non venga scritto manualmente dall’autore. Inoltre il numero massimo di parole presenti nel sommario è fissato a 55 , numero che potrebbe essere non sufficiente per ogni tipo di blog.
L’idea è di modificare the_excerpt() per renderla più adatta ai nostri scopi. Tutte le modifiche che verranno apportate al codice, si riferiscono all’ interno di un determinato tema senza modificare il core di WordPress.
Identificare la funzione
wp_trim_excerpt()è presente nel file wp-includes/formatting.php . Ricordando che non stiamo modificando il core, bisogna copiare e salvare l’intero corpo della funzione altrove. Apriamo il file functions.php del nostro tema utilizzato ed incolliamo la funzione. E’ importante modificare il nome della funzione in modo che il nome sia univoco , quindi modifichiamo il nome della funzione in :
function improved_trim_excerpt($text) {
Ecco come appare la funzione modificata:
function improved_trim_excerpt($text) {
global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text, '<p><img>');
$excerpt_length = 80;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words)> $excerpt_length) {
array_pop($words);
array_push($words, '[...]');
$text = implode(' ', $words);
}
}
return $text;
Incremento del numero massimo di parole
Basta modificare il valore numerico di questa linea di codice nel corpo della funzione:
$excerpt_length = 80;
In questo modo abbiamo incrementato tale valore a 80 parole massimo.
Includere tag HTML
L’idea è di includere tag come “p” per la formattazione e “img” per visualizzare le immagini . La linea di codice da modificare è la seguente:
$text = strip_tags($text, '<p><img>');
E’ possibile inserire ogni tipo di tag HTML nell’ elenco dei tag nella chiamata della funizione strip_tags().
L’ultima operazione da fare è di dire a WordPress di utilizzare questa funzione modificata e non quella originale del core, anche in questo caso il compito è semplice basta inserire nella parte finale del file functions.php del nostro tema le seguenti righe di codice:
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');
Il gioco è fatto! Adesso siamo pronti per i nostri sommari!











Commenti