WordPress: visualizzare i commenti recenti

WordPress: visualizzare i commenti recenti

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:

  1. $count: il numero di commenti da visualizzare
  2. $length: la lunghezza dell'estratto del commento
  3. $pre_HTML: la marcatura che viene prima della lista di commenti
  4. $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.

Torna su