Je travaille actuellement sur un plugin auquel j'ai fait allusion ici et, jusqu'à présent, j'ai réussi à tout coder, il ne manque qu'un morceau du puzzle.
Voici comment obtenir le nombre total de commentaires pour le current_user
:
global $wpdb, $current_user;
get_currentuserinfo();
$userID = $current_user->ID;
$where = 'WHERE comment_approved = 1 AND user_id = ' . $userID ;
$comment_count = $wpdb->get_var("SELECT COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}");
echo 'Total Comments: ' . $comment_count;
Je souhaite echo
le total des commentaires de current_user
sur les publications des autres utilisateurs , je ne souhaite donc pas compter les commentaires sur les propres publications de l'auteur. Une telle chose est-elle possible? Et si oui, comment?
Je ne suis au courant d'aucune fonction WordPress qui effectue cela. Vous pouvez donc essayer de jouer avec ce type de requête (non testée):
function get_custom_user_comments_count( $uid ){
global $wpdb;
$sql = "SELECT COUNT(*) as total
FROM {$wpdb->comments} as c
JOIN {$wpdb->posts} as p ON p.ID = c.comment_post_ID
WHERE c.comment_approved = '1'
AND p.post_status ='publish'
AND p.post_type ='post'
AND p.post_author != c.user_id
AND c.user_id = %d";
$comment_count = $wpdb->get_var( $wpdb->prepare( $sql, $uid ) );
return $comment_count;
}
et l'utiliser comme ça:
global $current_user;
get_currentuserinfo();
echo 'Total Comments: ' . get_custom_user_comments_count( $current_user->ID );
Cela suppose que les commentaires sont écrits lorsque les utilisateurs sont connectés. La colonne user_id
de la table wp_comments est donc remplie.
Une autre approche serait de collecter le nombre de commentaires par utilisateur dans la méta utilisateur. Vous pouvez par exemple essayer de vous accrocher à l'action comment_post
. Cette approche pourrait être mise en œuvre avant que les utilisateurs écrivent des commentaires sur le site.