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.
Ancora nessuna risposta per Gestire gli estratti dei post con WordPress: excerpt e content.