WordPress

Afficher des articles similaires (Related Post) sans plugin

Vous souhaitez ajouter des articles similaires (Related Posts) à la fin de vos articles sans plugin ? Voici un code qui va vous permettre d’afficher les articles connexes. Pour les articles de même catégorie ou de même étiquette/mot-clé (tag) vous allez afficher une miniature et le titre de l’article similaire.

Afficher les articles similaires vous permet d’optimiser le trafic de votre blog ou site en incitant vos visiteurs à aller sur d’autres pages.

Pour cela il existe bien évidemment de nombreux plugins qui peuvent le faire à votre place. Néanmoins il est préférable et conseillé de ne pas multiplier l’utilisation de plugins sur son wordpress. Tout d’abord pour des questions de sécurité : certains plugins peuvent contenir des failles de sécurité.  Mais aussi, multiplier le nombre de plugins peut jouer sur le temps de chargement de votre site.

Si vous utilisez ce code vous devez pouvoir avoir accès à l’arborescence de votre WordPress et avoir des connaissances en Css pour ensuite pouvoir styler le rendu de votre liste d’articles.

Pour afficher les articles similaires par rapport aux tags

Dans single.php ajoutez les lignes à l’endroit où vous souhaitez voir s’afficher les articles relatifs :

<?php $tags = wp_get_post_tags($post->ID); ?>
<?php if ($tags): ?>
  <?php $tag_ids = array(); ?>
  <?php foreach($tags as $individual_tag) : ?>
    <?php $tag_ids[] = $individual_tag->term_id; ?>
  <?php endforeach; ?>
  <?php  $args=array(
  'tag__in' => $tag_ids,
  'post__not_in' => array($post->ID),
  'posts_per_page'=>5, //Nombre d'articles affichés
  'ignore_sticky_posts'=>1,
  'oderby' => 'rand'
  );?>
  <?php  $my_query = new WP_Query($args); ?>
  <?php  if( $my_query->have_posts() ) : ?>
  <section class="related_posts">
    <h3>Vous aimerez aussi :</h3>
    <ul>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <li>
        <div>
          <a href="<?php the_permalink()?>"><?php the_post_thumbnail('medium_large'); ?></a>
          <h4 class="title-like"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h4>
        </div>
      </li>
    <?php  endwhile;?>
    </ul>
  </section>
  <?php endif; ?>
  <?php wp_reset_query();?>
<?php endif; ?>

Que fait le code ?

Le code va rechercher les tags du post (wp_get_post_tags($post->ID);) , si ces étiquettes existent (if ($tags):) il va rechercher les posts qui ont des tags communs, puis afficher les 5 premiers trouvés (‘posts_per_page’=>5)  de façon aléatoire (‘oderby’ => ‘rand’). L’article en cours est exclu de la requête (post__not_in).

Ensuite il va afficher l’image en Une et l’afficher en taille « medium_large » (the_post_thumbnail(‘medium_large’);). ‘medium_large‘ correspond à une largeur de 768px. Si vous souhaitez afficher une autre taille vous pouvez utiliser : thumbnail (the_post_thumbnail( ‘thumbnail’ );) qui affiche une miniature de 150*150, medium (300*300), large (2014*1024) ou full (taille originale).

Si rien n’est trouvé, rien ne s’affiche.

Pour afficher les articles relatifs par rapport à la catégorie

Cette fois-ci le code va afficher les articles ayant la même catégorie que l’article.

<?php $categories = get_the_category($post->ID); ?>
<?php if ($categories): ?>
  <?php $category_ids = array(); ?>
  <?php foreach($categories as $individual_category) : ?>
    <?php $category_ids[] = $individual_category->term_id; ?>
  <?php endforeach; ?>
  <?php  $args=array(
  'category__in' => $category_ids,
  'post__not_in' => array($post->ID),
  'posts_per_page'=>5,
  'ignore_sticky_posts'=>1,
  'oderby' => 'rand'
  );?>
  <?php  $my_query = new WP_Query($args); ?>
  <?php  if( $my_query->have_posts() ) : ?>
  <section class="related_posts">
    <h3>Vous aimerez aussi :</h3>
    <ul>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <li>
        <div>
          <a href="<?php the_permalink()?>"><?php the_post_thumbnail('medium_large'); ?></a>
          <h4 class="title-like"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h4>
        </div>
      </li>
    <?php  endwhile;?>
    </ul>
  </section>
  <?php endif; ?>
  <?php wp_reset_query();?>
<?php endif; ?>

Que fait le code ?

Le code va rechercher les catégoies de l’article (get_the_category($post->ID);) , et s’il trouve au moins une catégorie (if ($categories):) il va rechercher les articles ayant des catégories similaires. Ensuite il va afficher les 5 premiers trouvés (‘posts_per_page’=>5)  de façon aléatoire (‘oderby’ => ‘rand’). Comme précédemment l’article en cours est exclu de la requête (post__not_in).

Ensuite il va afficher l’image en Une et l’afficher en taille « medium_large » (the_post_thumbnail(‘medium_large’);)

Si rien n’est trouvé, rien n’est affiché.

 

Laisser un commentaire

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