Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coupe WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Comment éviter l’affichage en double des publications avec des boucles multiples dans WordPress

Essayez-vous de corriger l’affichage des publications en double avec plusieurs boucles dans WordPress ?

Si vous utilisez plusieurs requêtes WordPress pour afficher différents types de publications, vous risquez de rencontrer du contenu dupliqué. En effet, certaines publications peuvent correspondre à plus d’une boucle et apparaître deux fois.

Dans cet article, nous allons vous afficher comment éviter facilement l’affichage de publications en double avec plusieurs boucles dans WordPress.

Avoding duplicate posts when working with multiple WordPress loops

Comment les publications Duplicator apparaissent dans plusieurs boucles WordPress

Lors de la création d’un thème WordPress personnalisé ou d’un modèle de page personnalisé, vous devrez parfois utiliser plusieurs boucles WordPress.

Par exemple, vous pouvez afficher vos articles récents à côté des articles les plus populaires de votre site. En affichant tous les articles de chaque catégorie, vous pouvez également aider les lecteurs à trouver un contenu intéressant.

Dans tous ces exemples, une publication unique peut correspondre aux critères de plusieurs boucles. Dans ce cas, WordPress affiche un contenu en double.

Ce contenu dupliqué peut donner à votre site un aspect désordonné et non professionnel. Il occupe également de l’espace à l’écran sans apporter de valeur ajoutée.

Étant donné que vous générez dynamiquement des publications pour chaque boucle, vous ne pouvez pas prévoir manuellement si une publication dupliquée apparaîtra dans plusieurs boucles.

Ceci étant dit, voyons un moyen facile d’éviter les publications en double lorsqu’il s’agit de boucles multiples dans WordPress.

Éviter les publications Duplicator dans plusieurs boucles WordPress

Pour ce guide, nous allons vous montrer un exemple de code WordPress qui provoque l’erreur de publication en double et ensuite afficher un extrait de code qui corrige le problème.

Lors de la création d’un thème enfant WordPress ou d’un modèle personnalisé, votre code peut être complètement terminé. Cependant, vous pouvez utiliser notre extrait de code comme point de départ, puis le modifier pour l’adapter à votre propre site.

Tout d’abord, créons un problème de doublons. Dans l’exemple de code suivant, nous affichons tous les articles de la catégorie « voyages » et tous les articles de la catégorie « actualités » sans éviter les doublons :

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3 
));
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'posts_per_page'  =>  3
 
) );
 
// The Loop
if ( $second_query->have_posts() ) {
 
echo '<ul>';
while ( $second_query->have_posts() ) {
 
$second_query->the_post();
echo '<li>'; 
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Comme vous pouvez le constater, ce code ne vérifie pas la présence de publications en double dans l’une ou l’autre requête.

Si une publication appartient à la fois à la catégorie « nouvelles » et à la catégorie « voyages », elle apparaîtra deux fois, comme vous pouvez le voir dans l’image suivante.

How to avoid duplicate post display with multiple loops in WordPress

Corrigeons ce problème.

Afin d’éviter les publications en double sur votre blog WordPress, vous devrez stocker temporairement les données relatives à tous les articles affichés dans la première boucle.

Une fois que vous disposez de ces informations, vous pouvez modifier la deuxième requête pour empêcher les publications en double d’apparaître dans la deuxième boucle :

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3
) );
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
         
// Store Post IDs in an Array to reuse later
$exclude[] = $post->ID; 
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'post__not_in'  =>  $exclude, // Tell WordPress to Exclude these posts
'posts_per_page'  =>  3
 
) );
 
// The Loop
if ( $second_query->have_posts() ) {
 
echo '<ul>';
while ( $second_query->have_posts() ) {
 
$second_query->the_post();
echo '<li>'; 
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Dans le code ci-dessus, nous stockons les ID de publication dans un tableau appelé $exclude. Ensuite, nous ajoutons l’argument post__not_in à la deuxième requête, ce qui exclura les publications qui ont été affichées dans la première boucle.

Si vous n’êtes pas familier avec l’ajout d’extraits de code sur votre site, un moyen plus facile est d’utiliser WPCode. C’est le meilleur plugin d’extraits de code pour WordPress qui vous permet d’ajouter du code personnalisé sans risquer de casser votre site.

Tout d’abord, vous devez installer et activer le plugin WPCode. Si vous avez besoin d’aide, consultez notre guide sur l’installation d’un plugin WordPress.

Après l’activation, vous pouvez aller dans Code Snippets + Add Snippet à partir du tableau de bord de WordPress et cliquer sur l’option « Add Your Custom Code (New Snippet) » (Ajouter votre code personnalisé (nouveau snippet)).

Add a new custom code snippet in WPCode

Ensuite, vous pouvez coller le code personnalisé dans la zone de prévisualisation du code et saisir un titre en haut.

Vous devez également sélectionner le « Type de code » comme PHP Snippet en cliquant sur le menu déroulant.

Enter custom code snippet

Après avoir saisi le code, il suffit de faire défiler la page pour sélectionner la section Insertion.

Ici, vous pouvez utiliser le paramètre par défaut « Insertion automatique » et laisser le plugin ajouter automatiquement le code à votre site.

Insertion methods for snippets in WPCode

Une fois que vous avez terminé, il vous suffit d’enregistrer l’extrait et de l’activer.

Pour plus de détails, veuillez consulter notre guide sur l ‘ajout de code personnalisé dans WordPress.

Maintenant, si vous visitez votre site WordPress, vous verrez que les publications en double ont disparu.

Removing duplicate posts when using multiple posts in WordPress

Nous espérons que cet article vous a aidé à apprendre comment éviter l’affichage d’articles en double avec plusieurs boucles dans WordPress. Vous pouvez également consulter notre guide sur la façon de choisir le meilleur logiciel de conception Web ou notre choix d’experts des meilleurs constructeurs de pages WordPress à glisser-déposer.

Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

16 commentairesLaisser une réponse

  1. Syed Balkhi

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Nick J

    Is there a plugin that does this?

  3. Satriyo

    Could someone tell me how to do this? I’m really new to this and need a help, please give me a clear example with the post ID, how to store it? Let’s say, mine is 1527.

  4. Gaurav

    I’m running 2 loops before loops of a specific category in which I would like to avoid duplicates. So how do a store ID’s in the array from first two loops?

  5. Joe

    Just what I was looking for – thank you!

  6. Guilherme Alves

    Thank you soo much :))) This helps me alot!
    Save my day <3

  7. Julie

    AWESOME!! Thank you so much! And thank you SERGEYVLASOV for that last comment– Worked like a charm for my multiple loops. Hooray!! :)

  8. Pirooz

    This method just works fine until both of 2 loops located in one file.
    but when I put the first loop in the header.php and another one in the index.php,
    in_array($post->ID, $do_nit_duplicate) returns null.
    what can I do?

  9. warren

    Good afternoon all,

    will this work for my current issue with double display of posts on site? it literally displays a copy under the posts and the 1, 2, -> button…

    the site is I have deactivated re-activated plugins i am literally going nuts.

  10. agus

    can you help me?
    I have proble with duplicate category in my site

    please
    #thanks

  11. Gabriel

    Before iterating over the default loop shouldn’t we use wp_reset_postdata(); ?

  12. Greg

    @sergeyvlasov – Thanks that worked for me

    tho i changed

    $do_nit_duplicate to $do_not_duplicate

    ;)

  13. sergeyvlasov

    I think there is a flaw in this algorithm. It can spot no more than 1(one) duplication. So the magic line would look like
     
    $do_not_duplicate[] = $post->ID
     
    and then used as
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.