Gestire gli estratti dei post con WordPress: excerpt e content.


Quando si imposta un loop di post, avanzato o semplice che sia, usando WordPress, se volete che venga mostrato il contenuto dell’articolo o una parte di esso, dovete usare sotanzialmente due funzioni native di WP che sono the_content(); e the_excerpt(); la prima si differenzia dalla seconda per il fatto che mostrerà tutto il contenuto del post comprese immagini, video etc, al cotrario the_excerpt(); mostrerà solo un estratto della lunghezza di 55 parole escluso l’eventuale contenuto multimediale del post.

Può però capitare che le 55 parole che estrapola la funzione the_excerpt(); siano troppe o troppe poche, in tal caso è possibile modificare questa lunghezza utilizzando il filtro excerpt_lenght che si può attivare inserendo il codice sotto nella pagina function.php del vostro tema:

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

Dove 20 è il nuovo numero di parole che compariranno nell’estratto del post.

Come detto prima la funzione the_content(); invece riporta tutto il contenuto dell’articolo comprese immagini, video e tutto il contenuto multimediale, shortcode, eventuali stili etc. tutto ciò potrebbe essere anche un vantaggio ma rimane però il problema che se vogliamo limitare la lunghezza o inseriamo il tag more in ogni articolo oppure non esiste una soluzione nativa per risolvere questo problema.

Fortunatamente con PHP e un pò di ingengno si può fare praticamente qualsiasi cosa, così alcuni sviluppatori hanno pensato a delle soluzioni alternative per produrre il risultato desiderato customizzando l’estratto dei post mantenendo le caratteristiche della funzione the_content();.
L’esempio qui sotto è da copiare ed incollare nel file function.php del vostro template per renderlo funzionante:

 
function the_content_limit($max_char, $more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
$content = strip_tags($content);
if (strlen($_GET['p']) > 0) {
echo "
";
echo $content;
echo " <a href="";</p> <p>      the_permalink();</p> <p>      echo "">"."Read More →</p></a>";
echo "
";
}
else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
$content = substr($content, 0, $espacio);
$content = $content;
echo "
";
echo $content;
echo "...";
echo " <a href="";</p> <p>        the_permalink();</p> <p>        echo "">".$more_link_text."</p></a>";
echo "
";
}
else {
echo "
";
echo $content;
echo " <a href="";</p> <p>      the_permalink();</p> <p>      echo "">"."Read More →</p></a>";
echo "
";
}
}

Dopo ciò dovrete inserire all’interno del loop nella posizione che desiderate questa nuova funzione

<?php the_content_limit(20, "[Read more]"); ?>

In questa maniera la nuova funzione personalizzata the_content_limit accetta un valore numerico che sarà il numero di parole da estrapolare nel contenuto ed un testo personalizzabile per invitare il lettore a continuare a leggere l’articolo.

Info sull' autore:
Nato a Bologna, mi occupo della realizzazione grafica e dello sviluppo front-end di siti web e sono il fondatore di questo blog. Se vuoi segnalare qualche problema o hai qualche richiesta particolare invia una mail tramite il modulo contatti.
Leggi gli altri articoli di

Ancora nessuna risposta per Gestire gli estratti dei post con WordPress: excerpt e content.

Lascia un commento

Trackbacks