WordPress consente di visualizzare i commenti recenti sotto forma di widget. Il problema dei widget รจ che possono essere inseriti solo nelle aree dichiarate adatte ad ospitarli (per esempio tramite la funzione register_sidebar
) e non nel template di un post. Possiamo ovviare a questo limite creando una funzione ad hoc.
Inserite il seguente codice nel file functions.php
del vostro tema (se non esiste createne uno):
function recent_comments($count=7, $length=60, $pre_HTML='<div class="recent-comments"><h2>Commenti recenti</h2>', $post_HTML='</div>') {
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,
SUBSTRING(comment_content,1,$length) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT $count";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= '<ul>' . "\n";
foreach ($comments as $comment) {
$output .= "<li><a href=\"" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "\" title=\"su " . $comment->post_title . "\">" . $comment->comment_author . "</a>: " . strip_tags($comment->com_excerpt) . "...</li>";
}
$output .= '</ul>' . "\n";
$output .= $post_HTML;
return $output;
}
Questa funzione accetta quattro parametri:
$count
: il numero di commenti da visualizzare$length
: la lunghezza dell'estratto del commento$pre_HTML
: la marcatura che viene prima della lista di commenti$post_HTML
: la marcatura che viene dopo la lista di commenti
Potete a questo punto usare la funzione nel vostro tema nella parte che preferite:
<?php echo recent_comments(); ?>
Se non specificate alcun parametro, essi assumeranno il valore di quelli predefiniti.