Afișarea celor mai recente comentarii pe blog este o modalitate excelentă de a stimula interacțiunea și de a le arăta vizitatorilor că platforma ta se bucură de o comunitate activă. Dacă adaugi și avatarul Gravatar al fiecărui autor de comentariu, întreaga secțiune capătă un aspect modern și vizual atractiv.
Codul PHP pentru afișarea comentariilor recente cu avatar
Poți introduce următorul fragment de cod în fișierele șablonului tău (de exemplu în sidebar.php, footer.php sau într-o pagină dedicată). Funcția folosește API-ul standard WordPress get_comments() pentru a extrage doar mesajele aprobate și funcția nativă get_avatar() pentru imaginea de profil:
<?php
// Preluăm ultimele 5 comentarii aprobate
$recent_comments = get_comments(array(
'number' => 5,
'status' => 'approve',
'type' => 'comment',
));
if (!empty($recent_comments)) {
echo '<ul class="recent-comments-list">';
foreach ($recent_comments as $comment) {
$comment_url = get_comment_link($comment->comment_ID);
$post_title = get_the_title($comment->comment_post_ID);
$author_name = esc_html($comment->comment_author);
echo '<li class="recent-comment-item">';
// Avatarul utilizatorului (dimensiune 48x48 px)
echo '<div class="comment-avatar">';
echo '<a href="' . esc_url($comment_url) . '" title="' . esc_attr($author_name . ' | ' . $post_title) . '">';
echo get_avatar($comment->comment_author_email, 48);
echo '</a>';
echo '</div>';
// Detalii despre autor și articol
echo '<div class="comment-details">';
echo '<span class="comment-author"><a href="' . esc_url($comment_url) . '">' . $author_name . '</a></span> ';
echo '<span class="comment-article">la articolul <a href="' . esc_url(get_permalink($comment->comment_post_ID)) . '">' . esc_html($post_title) . '</a></span>';
echo '</div>';
echo '</li>';
}
echo '</ul>';
}
?>
Variantă alternativă prin interogare directă în baza de date ($wpdb)
Dacă preferi o interogare directă pe tabelele WordPress folosind clasa globală $wpdb, structura funcțională este similară:
<?php
global $wpdb;
$query = "SELECT * FROM {$wpdb->comments}
WHERE comment_approved = '1'
ORDER BY comment_date DESC
LIMIT 5";
$comments = $wpdb->get_results($query);
if ($comments) {
echo '<ul class="recent-comments-list">';
foreach ($comments as $comment) {
$comment_url = get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID;
$author_name = esc_html($comment->comment_author);
echo '<li>';
echo '<div class="comment-avatar">';
echo '<a href="' . esc_url($comment_url) . '">' . get_avatar($comment->comment_author_email, 48) . '</a>';
echo '</div>';
echo '<div class="comment-meta">';
echo 'Comentariu de <strong><a href="' . esc_url($comment_url) . '">' . $author_name . '</a></strong>';
echo '</div>';
echo '</li>';
}
echo '</ul>';
}
?>
Stilizare CSS recomandată
Pentru a alinia avatarul și textul comentariului într-un mod ordonat, adaugă în fișierul style.css al temei următoarele reguli:
.recent-comments-list {
list-style: none;
margin: 0;
padding: 0;
}
.recent-comments-list li {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.recent-comments-list .comment-avatar img {
border-radius: 50%;
display: block;
}
.recent-comments-list .comment-details {
font-size: 0.95em;
line-height: 1.4;
}