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;
}