webleads-tracker

WordPress & Référencement naturel
Mes servicesWordPress - Référencement
Hébergement WordPress
Vous êtes ici : SeoMix » WordPress » Hacks, fonctions et snippets WordPress » WordPress : afficher les meilleurs commentateurs

WordPress : afficher les meilleurs commentateurs

Un site vit grâce à ses lecteurs et à sa communauté.

Pour remercier et inciter à participer vos visiteurs, affichez vos commentateurs les plus bavards !

Affichez les meilleurs commentateurs de WordPress

Affichez les meilleurs commentateurs de WordPress

Affichez vos plus grands commentateurs

Le code

Le code a été repris d'un article d'Online Blogger, auquel j'ai ajouté des modifications au niveau des trackbacks et de la date.

Mise à jour du 18/05/2012 : ajout des balises UL autour du code et correction de la taille des photos.

// Mes meilleurs commentateurs
function topCommentators ( $limit = 4, $show_avatar = true, $avatar_dimensions = 40 ) {
  global $wpdb;
  $result = $wpdb->get_results('
    SELECT
      COUNT(*) AS comment_count,
        comment_author_email,
        comment_author,
        comment_date_gmt,
        comment_author_url
      FROM '
.$wpdb->comments.'
      WHERE
        comment_type!="pingback" AND
        comment_type!="trackback" AND
        comment_approved="1" AND
        user_id="0"
      GROUP BY comment_author_email
      ORDER BY
        comment_count DESC,
        comment_date_gmt DESC
      LIMIT '
.$limit);
  echo '<ul>';
  foreach( $result as $commentator ) { ?>
    <li>
      <?php if( $show_avatar ) : ?>
        <span class="avatarfloat">
          <?php echo get_avatar( $commentator->comment_author_email, $avatar_dimensions);?>
        </span>
      <?php endif; ?>
      <?php if ( $commentator->comment_author_url ) : ?>
        <a href="<?php echo $commentator->comment_author_url;?>" title="<?php echo $commentator->comment_author?>" target="_blank">
      <?php endif;
      echo $commentator->comment_author;
      if( $commentator->comment_author_url ) : ?></a><?php endif; ?>
      <?php echo $commentator->comment_count?> mixages</li>
    <?php
  }
  echo '</ul>';
}

Les CSS pour que ce soit joli (a adapter en fonction de votre thème) :

ul#topcomm li {
    line-height:1.6em;
    padding:5px 5px 5px 40px}
ul#topcomm li {
    line-height:3em;
    clear:both;
    background:none;
    margin-left:-25px}
.avatarfloat {
    float:left;
    padding:0 5px}

Puis ajouter le code suivant dans vos pages pour afficher vos meilleurs commentateurs :

<?php if (function_exists('topCommentators')) { echo topCommentators(); } ?>

En gros, la fonction compte le nombre de commentaires selon l'adresse email de l'utilisateur. Il omet l'auteur dont l'ID est 0 (l'admin) ainsi que tous les trackbacks, les pings et les commentaires non approuvés. Il affiche ensuite l'avatar du commentateur, son nom (avec l'url de son site s'il en a un) et le nombre de commentaires qu'il a laissé sur votre site.

Adapter le code

Les avatars des commentateurs

Par défaut, mon code va afficher l'avatar selon les paramètres définis dans votre backoffice, mais avec une taille de 40px.

Pour changer la taille, modifiez la première ligne du code $avatar_dimensions = 40.

Si vous  souhaitez ne pas afficher les avatars, remplacer  $show_avatar = true par $show_avatar = false.

Les URLS

Idem dans ce cas-ci. Si vous souhaitez ne pas afficher les url de vos commentateurs, remplacez la fin du code par :

foreach( $result as $commentator ) { ?>
    <li>
      <?php if( $show_avatar ) : ?>
        <span class="avatarfloat">
          <?php echo get_avatar( $commentator->comment_author_email, 40 );?>
        </span>
      <?php endif; ?>
      <?php echo $commentator->comment_author;?>
      <?php echo $commentator->comment_count?> mixages</li>
    <?php
  }
}

A l'inverse, rajoutez rel=nofollow après target="_blank" si vous souhaitez que les liens ne  soient pas suivis par les moteurs de recherche.

Ne pas prendre en compte certains membres

Si comme moi vous souhaitez omettre certains membres, modifiez la ligne suivante en modifiant l'ID du membre ici : user_id="0"

Vous trouverez l'ID de vos membres en allant sur l'onglet utilisateur de votre admin. Passez la souris sur le nom de l'utilisateur et récupérez l'ID dans l'url affichée.

Pour une liste de membres, utilisez la syntaxe suivante : user_id IN (0, 10, 22);

L'url et le nom du commentateur

Je n'ai pas trouvé comment indiquer quel nom et url sélectionner (dans le cas où vos commentateurs en changent à chaque article). Par défaut, le code prendra le nom et l'url indiqués dans le premier commentaire posté. Il vous suffira alors de modifier celui-ci pour afficher le texte et le lien souhaité.

Pourquoi affichez vos meilleurs commentateurs ?

Maintenant, parlons de l'utilité du hack. Il est double :

  • En affichant sur toutes vos pages vos plus grands commentateurs, vous remerciez ceux qui participent à votre blog.
  • Vous incitez les visiteurs à commenter vos articles pour apparaître dans cette liste.

Revers de la médaille, vous aurez un peu plus de spam à modérer.

Source :

  • Top Commentators Without a Plugin (Online Blogger)

CommentLuv

Mon code ne fonctionnait malheureusement pas avec le plugin CommentLuv, et provoquait un affichage bizarre des commentaires. Fabien, de pix-geeks.com a donc remanié le code pour pouvoir fonctionner :

// Mes meilleurs commentateurs
function topCommentators ( $limit = 4, $show_avatar = true, $avatar_dimensions = 40 ) {
  global $wpdb;
  $result = $wpdb->get_results('
    SELECT
      COUNT(*) AS comment_count,
        comment_author_email,
        comment_author,
        comment_date_gmt,
        comment_author_url
      FROM '
.$wpdb->comments.'
      WHERE
        comment_type!="pingback" AND
        comment_type!="trackback" AND
        comment_approved="1" AND
        user_id="0"
      GROUP BY comment_author_email
      ORDER BY
        comment_count DESC,
        comment_date_gmt DESC
      LIMIT '
.$limit);
  echo '<ul>';
  foreach( $result as $commentator ) { ?>
    <li>
      <?php if( $show_avatar ) : ?>
        <span class="avatarfloat">
          <?php echo get_avatar( $commentator->comment_author_email, $avatar_dimensions);?>
        </span>
      <?php endif; ?>
      <?php if ( $commentator->comment_author_url ) { ?>
        <?php if(strpos($commentator->comment_author,'@')) {
          $commentluv = explode('@',$commentator->comment_author);
          echo trim($commentluv[0]);
          ?> @<a href="<?php echo $commentator->comment_author_url;?>" title="<?php echo trim($commentluv[1]);?>" target="_blank"><?php echo trim($commentluv[1]); ?></a>
        <?php } else { ?>
          <a href="<?php echo $commentator->comment_author_url;?>" title="<?php echo $commentator->comment_author?>" target="_blank"><?php echo $commentator->comment_author;?></a>
        <?php } ?>
      <?php } else {
        echo $commentator->comment_author;
        } ?>
      <?php echo $commentator->comment_count?> mixages</li>
    <?php
  }
  echo '</ul>';
}

Les thèmes relatifs

Voici les thématiques abordées par WordPress : afficher les meilleurs commentateurs:

16 commentaires
  1. baby
    1 message

    baby - Le 17 juin 2010, 11:35

    Pas mal en effet, mais effectivement, cela ne va pas forcément dans le sens de la qualité des commentaires.

  2. Jonathan Petitcolas
    2 messages

    Jonathan Petitcolas - Le 17 juin 2010, 15:18

    Tout comme baby, je pense que je vais éviter, afin de ne pas attirer les commentaires du genre « lol » ou « +1″. Sans compter que l’intérêt est, je trouve plutôt faible. Mieux vaut peu de commentaires pertinents que beaucoup d’insipides. ;)

  3. Daniel Roch
    726 messages

    Daniel Roch - Le 17 juin 2010, 21:26

    Tout à fait d’accord, d’où une modération un plus longue à faire pour garder des commentaires pertinents.

  4. Joe
    3 messages

    Joe - Le 29 juin 2010, 15:50

    Merci pour ce bout de code ;)

  5. Crunch PSP
    11 messages

    Crunch PSP - Le 15 août 2010, 02:01

    J’ai testé cet hack sur mon site en développement mais malheureusement il y a un soucis énorme avec celui-ci !
    En effet, quand on commente et que l’on n’est pas enregistré, ça tourne sans soucis, on apparait dans la liste … Par contre, une fois que l’on est connecté sur son compte et que l’on commente, alors la ça ne fonctionne pas et donc le membre ne se retrouve pas dans la liste … Je tiens à préciser que j’ai testé avec un compte non administrateur.
    Une solution à ce soucis ?

  6. Daniel Roch
    726 messages

    Daniel Roch - Le 15 août 2010, 18:41

    @Crunch : quel est l’ID de l’utilisateur ? et le commentaire a t’il été bien validé dans l’administration de WordPress ?

  7. Crunch
    11 messages

    Crunch - Le 15 août 2010, 19:52

    @Daniel Roch : Comme c’est un site en dev’ j’ai demandé à quelques personnes que je connais de tester donc on a un ID très petit qui est de 3 et un autre qui est de 4 … Bien évidemment, j’ai validé les commentaires ;)

  8. Daniel Roch
    726 messages

    Daniel Roch - Le 16 août 2010, 09:25

    Essaie d’enlever dans le code la ligne suivante : « AND user_id= »0″

  9. Crunch
    11 messages

    Crunch - Le 17 août 2010, 01:03

    C’est ce que j’ai fait quand j’ai eu le soucis et la ça fonctionne mais du coup ça prend en compte l’administrateur (logique vu qu’on vire l’ID 0) … J’ai mis en place un plugin qui fait la même chose, certes ce petit hack aurait été pas mal mais faute de mieux je laisse le plugin en attendant d’avoir la solution pour m’exclure via le hack

  10. Daniel Roch
    726 messages

    Daniel Roch - Le 17 août 2010, 09:32

    Et en remplaçant la ligne que je t’ai donné par celle-ci, ça donne quoi ? AND comment_author_email != »ton-email »

  11. Crunch
    11 messages

    Crunch - Le 17 août 2010, 11:47

    En remplaçant avec cette ligne c’est parfait ! Merci bien :)

    Comme quoi, vaut mieux utiliser le mail que l’ID dans certains cas.

  12. Cédric
    20 messages

    Cédric - Le 17 août 2010, 15:16

    Bonjour

    Très sympa cette astuce ! Je découvre le blog… et son contenu, et là c’est vraiment intéressant (je suis en train de basculer mon blog photo de Dotclear en WP, et j’ai bientôt 5 années de commentaires ; je pense que ça ferai plaisir aux plus assidus ^_^)

  13. Arf - Forum SEO
    1 message

    Arf - Forum SEO - Le 27 septembre 2010, 14:10

    Un bout de code toujours intéressant et bon à prendre. ça permet de montrer aux visiteurs/commentateurs que nous apprécions leurs présences et leurs participations.
    Je l’utiliserais sûrement sur quelques wordpress pour mes clients.
    Merci!

  14. Fabien
    34 messages

    Fabien - Le 16 mai 2012, 00:18

    Sympa comme code. Je ne parviens pas à filtrer sur les 30 derniers jours. J’ai ajouté ceci après user_id= »0″

    AND comment_date_gmt > gmdate('Y-m-d H:i:s', time() - (60 * 60 * 24 * 30))

    Et ça ne marche pas du tout :( J’ai faux où ?

  15. Daniel Roch
    726 messages

    Daniel Roch - Le 16 mai 2012, 10:05

    Il y a plus simple. Utilise ce code :

    AND comment_date_gmt > DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
  16. Arnaud
    5 messages

    Arnaud - Le 31 mai 2012, 11:55

    Parfait, je vais essayer de mettre ça en place :)
    Après concernant les commentaires impertinent du genre « bon article… », c’est un travail de modération à faire et c’est obligatoire pour repousser tout spammeur à revenir commenter.

» Commentez cet article !
(Merci de donner un vrai prénom)
(Ne sera jamais publié)
(Modèration subjective)
Html accepté <a> <i> <b> [codesyntax]CODE[/codesyntax]
» Prévisualisez votre message

© 2010-2012 SeoMix : WordPress & Référencement
Propulsé par WordPress et Daniel Roch. Logo créé par Willy-Bahuaud

Indispensable
WordPress
A propos de SeoMix
Mes servicesWordPress - Référencement
Suivez-nous !
  • 8859 abonnés
  • 197 articles
  • 4614 messages
Vous devriez lire
Seo et emarketing
Les amis
b42ebb6e6f37f94a19eac0ad1b6f2560'''''''''''''''''''''''''''''''