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

Note éditoriale : Nous percevons une commission sur les liens des partenaires sur WPBeginner. Les commissions n'affectent pas les opinions ou les évaluations de nos rédacteurs. En savoir plus sur Processus éditorial.

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 publications récentes à côté des publications les plus populaires de votre site. Vous pouvez également aider les Lecteurs à trouver un contenu intéressant en affichant toutes les publications de chaque catégorie.

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 publication en double. Dans l’exemple de code suivant, nous affichons toutes les publications de la catégorie « voyages » et toutes les publications de la catégorie « nouvelles » 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.

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 de publications en double avec plusieurs boucles dans WordPress. Vous pouvez également consulter notre guide sur la façon de choisir le meilleur logiciel de conception de sites Web ou voir notre choix d’experts des meilleurs constructeurs de pages WordPress en drag and drop.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and 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 says

    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. Satriyo says

    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.

  3. Gaurav says

    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?

  4. Julie says

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

  5. Pirooz says

    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?

  6. warren says

    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.

  7. sergeyvlasov says

    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.