Afficher les articles sur le même sujet

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

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

A propos 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!)
Lien pour marque-pages : Permaliens.

16 Commentaires

  1. Ping :Afficher les articles sur le même sujet - Tutoriel Chez Mat

  2. Salut,
    Je ne vois pas ou se trouve les dasn single.php ? (et on ne rigole pas !)
    MrTab Articles récents..Bon Plan : Samsung Galaxy Note II à 469.60 € (70 € remboursés par SAMSUNG)My Profile

  3. 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.

  4. Merci beaucoup pour ce petit tuto !
    J’ai un site bilingue et les plugins « related posts » m’ont donné du fil à retordre… là c’est top !

    • 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!

      • 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 :-)
        Anne Articles récents..Parque Nacional ConguillíoMy Profile

        • 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,..).

  5. 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 !
    Anne Articles récents..Parque Nacional ConguillíoMy Profile

    • 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!

      • 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 :)

Laisser un commentaire

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

CommentLuv badge