in Informatica, Wordpress

WordPress – Personalizzare the_excerpt

Capita spesso di doversi interfacciare con wordpress da una pagina php e dover mostrare una parte di post pubblicati. In questo caso le API ci vengono incontro con la funzione the_excerpt nella quale però non è possibile specificare il numero di caratteri da visualizzare. Per poter personalizzare la funzione, è possibile riscriverne una personalizzata aggiungendolo al file functions.php (presente all’interno della cartella wp-includes del wordpress installato).

function custom_excerpt($new_length = 20, $new_more = '...') {
  add_filter('excerpt_length', function () use ($new_length) {
    return $new_length;
  }, 999);
  add_filter('excerpt_more', function () use ($new_more) {
    return $new_more;
  });
  $output = get_the_excerpt();
  $output = apply_filters('wptexturize', $output);
  $output = apply_filters('convert_chars', $output);
  $output = '<p>' . $output . '</p>';
  echo $output;
}

A questo punto sarà sufficiente richiamare la funzione dal template, utilizzando:

<?php custom_excerpt(40, 'testo') ?>

Nota: Utilizzando questa funzione è possibile modificare il testo “Read More”, con il testo passato come secondo parametro, ma il link non sarà funzionante.

La variante della procedura completa per la gestione del link è la seguente:

function custom_excerpt($new_length = 20, $new_more = '...') {
 add_filter('excerpt_length', function () use ($new_length) {
 return $new_length;
 }, 999);
 add_filter('excerpt_more', function () use ($new_more) {
 global $post;
 return '<a class="moretag" href="'. get_permalink($post->ID) . '">'.$new_more.'</a>';
 });
 $output = get_the_excerpt();
 $output = apply_filters('wptexturize', $output);
 $output = apply_filters('convert_chars', $output);
 //$output = '<p>' . $output . '</p>';
 echo $output;
 }