Afficher les articles sur le même sujet

Pour ce nouveau tutoriel, on va voir comment afficher les articles sur un même sujet  (les fameux « related posts ») sans aucun plugin. Il va s’agir d’ajouter une petite ligne de code dans votre fichier article (single.php). Cela ne fonctionne que pour les articles, pas pour les pages puisque c’est basé sur les tags qui n’existent pas pour les pages. Pour les pages, je cherche une solution, si je trouve une bonne idée, je vous en ferai part!

Le code va aller chercher les articles qui ont un tag identique à celui affiché et vous pouvez choisir combien de lignes vous souhaitez afficher (‘showposts’=>) :

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
    $tag_ids = array();
    foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;

    $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'showposts'=>10, // Number of related posts that will be shown.
        'caller_get_posts'=>1
    );
    $my_query = new wp_query($args);
    if( $my_query->have_posts() ) {
        echo '<h3>ARTICLES SIMILAIRES :</h3><ul>';
        while ($my_query->have_posts()) {
            $my_query->the_post();
        ?>
            <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Lien vers <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php
        }
        echo '</ul>';
    }
}
?>

Le code est à insérer après cette ligne dans le fichier single.php (via l’éditeur de votre panneau d’administration : « Apparence » puis « éditeur »):

<!-- /post content -->

Vous pouvez également changer l’en-tête qui sera affiché avant la liste (pour ma part, j’ai mis « Articles similaires »). Et puis comme on fait du code « propre », on oublie pas de commenter au début et à la fin du code :

<!-- sur le même sujet -->

Comme à chaque fois que vous modifiez un fichier de votre thème, penser à faire une sauvegarde avant toute modification (soit du fichier via FTP, soit un copier-coller du contenu du fichier via l’éditeur wordpress dans un fichier txt).

Cela doit permettre d’augmenter le nombre de pages vues par visiteurs, ce qui n’est pas négligeable!! Et vous, utilisez-vous la notion d’articles relatifs??

Source

VN:F [1.9.22_1171]
Evaluez l'article :
Note : 5.0/5 (2 votes)

Publié par

Mat

Webmaster de Chez Mat, trentenaire passionné d'informatique et de séries. Je partage avec vous mes tutos et astuces informatiques : matériels, logiciels et aussi du wordpress! Grand fan de culture Japonaise, je parle également de mes passions sur mon autre site (Séries, Mangas, Animés, Musique et de temps en temps, un peu de cinéma et de livres!)

16 réflexions au sujet de « Afficher les articles sur le même sujet »

  1. J’ai préféré utiliser un plugin tout fait ( WP Related Post ) qui est vraiment simple et surtout ne demande pas de code spécifique, c’est plus facile quand on y connais pas grand chose en programmation.

    1. Bonsoir Anne,

      Avec plaisir! D’ailleurs, je prépare une « version 2 » du tuto pour avoir la même chose mais avec les miniatures en plus comme je viens de le mettre en place ici. L’avantage du code, c’est qu’on peut le customiser comme on veut, mais c’est moins facile quand on ne maitrise pas les « arcanes » du php!

      1. Bonjour Mat,
        En effet quand on ne connaît pas le code on est vite perdu… ce qui m’arrive tout le temps, puisque c’est avec mon site que j’apprends !
        J’ai noté il y a peu un petit problème : il affiche aussi les commentaires des articles sur le même sujet en bas de l’article affiché. Je ne sais pas si c’est lié à mon thème ou au fait que le blog soit multilingue (ce qui fait des choses étranges à la gestion des commentaires…).
        Mais je me suis dit que le feedback est toujours intéressant :-)

        1. Bonjour Anne,

          Difficile de te répondre comme ça. Tu aurais un exemple?
          Ensuite, cela dépend de comment tu gères les articles sur le même sujet (thème, plugin,..).

  2. Bonjour Mat,
    En fait, quand le code que tu donnes ici est inséré, je vois bien la liste d’articles sur le même sujet apparaître. Par exemple, j’ai un billet « choisir son sac à dos » et un billet « 5 conseils pour éviter les vols en voyage ». Sur « 5 conseils… », « choisir son sac » apparaît en article sur le même sujet. Et dans la section « commentaires » ce sont les commentaires de « choisir son sac » qui apparaissent. Notons que ça respecte les langues : commentaires fr sur le poste en fr, commentaires es sur le poste en es. Quand je retire le code, tout rentre dans l’ordre.
    Si je suis la seule à te signaler le bug, je suppose que ça ne concerne que moi. Mon plugin bilingue (WPML) a tendance à compliquer certaines choses (par exemple, la gestion des commentaires avec Akismet) et jusqu’ici aucun plugin d’articles sur le même sujet n’a fonctionné correctement. La quête continue !
    Merci d’avoir répondu en tout cas !

    1. Bonjour Anne,

      J’ai eu des problèmes de ce type-là lorsque le code n’est pas inséré au bon endroit dans la page single.php. Il doit y avoir une boucle quelque part qui n’est pas terminée et qui vient interférer avec mon bout de code..
      Mais là, j’atteins ma limite de compétence!

      1. Bonjour !

        J’arrive un peu tard (même très tard), mais pour palier à ce problème il suffit d’ajouter cette ligne avant la dernière accolade :
        wp_reset_query();

        Nous procédons à un reset de la fonction pour que notre morceau de code n’ait plus d’influence sur le reste de la page :)

        1. Bonjour Gautier, bonjour Mat,
          Je viens d’insérer le code avec cette ligne supplémentaire et ça marche parfaitement ! Les articles similaires s’affichent correctement dans les deux langues, sans bug. J’avais pas mal cherché sans jamais trouver une solution…
          Merci beaucoup !!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.