Afficher les derniers commentaires dans votre blog sans widget

6 août 2010 dans Tutoriels Wordpress

derniers-commentaires

Par défault WordPress gère l’affichage des derniers commentaires, cependant pour permettre une totale customisation des données et du css j’utilise ce petit bout de code à intégrer par exemple dans sidebar.php ou ailleurs dans la template :

  • On peut ainsi gérer le nombre de caractère maximum des commentaires pour une intégration parfaite : SUBSTRING(comment_content,1,30) ici 30 caractères max.
  • Gérer le nombre de commentaires: LIMIT 10 ici 10 commentaires max.
  • Afficher les informations voulues (date, auteur, …)
<h2>Derniers commentaires</h2>
 <?php
 global $wpdb;
 $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
 comment_post_ID, comment_author, comment_date_gmt, comment_approved,
 comment_type,comment_author_url,
 SUBSTRING(comment_content,1,30) AS com_excerpt
 FROM $wpdb->comments
 LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
 $wpdb->posts.ID)
 WHERE comment_approved = '1' AND comment_type = '' AND
 post_password = ''
 ORDER BY comment_date_gmt DESC
 LIMIT 10";
 $comments = $wpdb->get_results($sql);
 $output = $pre_HTML;
 $output .= "\n<ul>";
 foreach ($comments as $comment) {
 $output .= "\n<li>".strip_tags($comment->comment_author)
 .":" . "<a href=\"" . get_permalink($comment->ID) .
 "#comment-" . $comment->comment_ID . "\" title=\"on " .
 $comment->post_title . "\">" . strip_tags($comment->com_excerpt)
 ."</a></li>";
 }
 $output .= "\n</ul>";
 $output .= $post_HTML;
 echo $output;
?>

Articles Relatifs

8 Commentaires

  1. Pascal

    Bonjour !

    Merci pour ce bout de code très utile. J’aimerais afficher la date à la place de l’auteur, mais ne pas l’avoir dans son format USA, comment puis-je modifier le code pour que cela affiche au format que je souhaite ?`

    voici mon bout de code adapté

    comments
    LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
    $wpdb->posts.ID)
    WHERE comment_approved = ’1′ AND comment_post_ID = ’250′ AND comment_type =  » AND
    post_password =  »
    ORDER BY comment_date_gmt DESC
    LIMIT 3″;
    $comments = $wpdb->get_results($sql);

    $output = $pre_HTML;
    $output .= « \n »;
    foreach ($comments as $comment) {
    $output .= « \n« .strip_tags($comment->comment_date))
    . »: » .  »
     » . strip_tags($comment->com_excerpt)
    . »« ;
    }
    $output .= « \n »;
    $output .= $post_HTML;
    echo $output;

    ?>

    • ben-wpSpirit

      Essayes ça < ?php echo comment_date(' H:i',$comment->comment_ID);?> min le< ?php echo comment_date(' j F Y',$comment->comment_ID);?>

  2. laurent

    Bonjour !
    super le code !
    Je suis débutant, tout marche avec votre code,
    mais est-il possible de ne sélectionner que les commentaires d’une seule catégorie ?

  3. Je mets de côté mais je vais continuer à chercher s’il existe pas une méthode plus propre :)

  4. Trop fort mon pote. Je cherchais ça et je tombe sur toi. C’est vraiment toi le chef !

  5. Un peu sale mais ça marche.

    Les variables $pre_html et $post_html sortent d’où ?

    • ben-wpSpirit

      Dans l’exemple ces variables ne servent à rien puisqu’elles ne sont pas déclarées $pre_html $post_html peuvent contenir une balise div ouvrante et fermante.

  6. très intéressant. merci beaucoup

Laisser un commentaire