web-dev-qa-db-fra.com

Existe-t-il un plugin qui compte les messages par auteur?

Je souhaite avoir une page répertoriant tous les auteurs et le nombre de messages publiés par chacun d’eux. Existe-t-il un plugin qui le fait déjà? Pouvoir compter le nombre de commentaires serait également un avantage.

Merci pour l'aide.

4
evergreen

Je ne connais pas de plugin mais vous pouvez utiliser ceci:

Dans author.php, vous pouvez utiliser ceci pour compter les posts:

<?php
global $wp_query;
$curauth = $wp_query->get_queried_object();
$post_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = '" . $curauth->ID . "' AND post_type = 'post' AND post_status = 'publish'");
?>
<h2>Post Count: <?php echo $post_count; ?></h2>

À l'intérieur d'une boucle, vous pouvez l'utiliser pour compter les messages et les commentaires:

<?php
global $wpdb;
$user_id = $post->post_author;  //change this if not in a std post loop
$where = 'WHERE comment_approved = 1 AND user_id = ' . $user_id ;
$comment_count = $wpdb->get_var(
    "SELECT COUNT( * ) AS total
        FROM {$wpdb->comments}
        {$where}
    ");
$user = get_userdata($user_id);
$post_count = get_usernumposts($user->ID);
echo '<p>User ' . $user->display_name . ' post count is ' . $post_count .', comment count is ' . $comment_count . '</p>';
?>

Pour tous les auteurs:

<?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);
  $post_count = get_usernumposts($user->ID);
  echo '<p>User ' . $user->display_name . ' post count is ' . $post_count .', comment count is ' . $count->total . '</p>';
}
?>
3
Philip