Comment afficher le nombre total de commentaires d'un utilisateur en dehors de The Loop?
J'utilise ce code pour afficher le nombre de commentaires à l'intérieur de la boucle :
<?php
global $wpdb;
$user_id = $post->post_author;
$where = 'WHERE comment_approved = 1 AND user_id = ' . $user_id ;
$comment_count = $wpdb->get_var(
"SELECT COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
");
echo 'Comments: <strong>' . $comment_count . '</strong>';
?>
Cela fonctionne parfaitement dans la boucle. Pour essayer de faire fonctionner ce code en dehors de la boucle, j'ai changé $user_id = $post->post_author;
en $user_id = get_the_author_meta( 'ID' );
mais cela ne fonctionnait pas.
Le plus proche que j'ai été est avec ce code:
<?php
global $wpdb;
$where = 'WHERE comment_approved = 1 AND user_id <> 0';
$comment_counts = (array) $wpdb->get_results("
SELECT user_id, COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
GROUP BY user_id
", object);
foreach ( $comment_counts as $count ) {
$user = get_userdata($count->user_id);
echo 'Comments: ' . $count->total . '
';
}
?>
Cependant, ce compte echos compte pour tous les utilisateurs, comme ceci: "Commentaires: 28 Commentaires: 11 Commentaires: 55" etc
Quel code puis-je utiliser pour afficher le nombre de commentaires de l'utilisateur en dehors de la boucle ?
Vous êtes plus ou moins déjà là avec le code, il vous suffit de le modifier légèrement.
Vous ne mentionnez pas comment vous obtenez l'ID utilisateur, mais si vous souhaitez vérifier l'ID utilisateur, il est assez facile de le faire en dehors de la boucle.
Voici un exemple simple:
$userid=1;
$comment_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) AS total FROM $wpdb->comments WHERE comment_approved = 1 AND user_id = %s", $userid ) );
echo "Number of comments for user $userid is $comment_count";
Remarque: la partie de la requête portant la mention "comment_approved = 1" ne compte que les commentaires approuvés, si vous souhaitez inclure les commentaires non approuvés, laissez cette partie de côté.