Tutoriels WordPress de confiance, quand vous en avez le plus besoin.
Guide du débutant pour WordPress
WPB Cup
25 millions+
Sites web utilisant nos plugins
16+
Années d'expérience WordPress
3000+
Tutoriels WordPress par des experts

Comment éviter l'affichage de publications en double avec plusieurs boucles dans WordPress

Si vous utilisez plusieurs requêtes WordPress pour afficher différents ensembles de publications, vous pourriez rencontrer du contenu en double. C'est parce que certaines publications peuvent correspondre à plus d'une boucle et apparaître deux fois.

WordPress ne dispose pas d'une option intégrée pour éviter les publications en double dans plusieurs boucles. Cependant, au cours de nos plus de 15 ans d'expérience dans la gestion de différents sites WordPress, nous avons appris à éviter ce problème. Nous avons donc créé un extrait de code personnalisé que vous pouvez ajouter à votre site et éviter que des publications en double ne soient affichées dans différentes boucles.

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

Éviter les articles en double lors du travail avec plusieurs boucles WordPress

Comment les publications en double apparaissent dans plusieurs boucles WordPress

Lorsque vous créez un thème WordPress personnalisé ou un modèle de page personnalisé, vous pourriez parfois avoir besoin d'utiliser plusieurs boucles WordPress.

Par exemple, vous pourriez vouloir afficher vos publications récentes à côté des publications les plus populaires de votre site. En affichant toutes les publications de chaque catégorie, vous pourriez également aider les lecteurs à trouver du contenu intéressant.

Dans tous ces exemples, une seule publication peut correspondre aux critères de plusieurs boucles. Lorsque cela se produit, WordPress affichera du contenu en double.

Ce contenu en double peut rendre votre site désordonné et non professionnel. Il occupe également de l'espace à l'écran sans ajouter de valeur.

Comme vous générez dynamiquement des articles pour chaque boucle, vous ne pouvez pas prédire manuellement si un article en double apparaîtra dans plusieurs boucles.

Cela étant dit, examinons un moyen simple d'éviter les articles en double lorsque vous traitez plusieurs boucles dans WordPress.

Éviter les articles en double dans plusieurs boucles WordPress

Pour ce guide, nous vous montrerons un exemple de code WordPress qui provoque l'erreur d'article en double, puis nous partagerons un extrait de code qui résout 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 différent. Cependant, vous pouvez utiliser notre extrait de code comme point de départ, puis le modifier pour qu'il corresponde à votre propre site Web.

Tout d'abord, créons un problème d'article en double. Dans le code d'exemple suivant, nous affichons tous les articles de la catégorie 'voyage' et tous les articles de la catégorie 'actualités' sans éviter les articles en double :

/******  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 les articles en double dans l'une requête.

Si un article appartient aux deux catégories 'actualités' et 'voyage', il apparaîtra deux fois, comme vous pouvez le voir dans l'image suivante.

Comment éviter l'affichage d'articles en double avec plusieurs boucles dans WordPress

Corrigeons ce problème.

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

Une fois que vous avez ces informations, vous pouvez modifier la deuxième requête pour empêcher les articles 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 identifiants d'article dans un tableau appelé $exclude. Après cela, nous ajoutons l'argument post__not_in à la deuxième requête, qui exclura les articles qui ont été affichés dans la première boucle.

Si vous n'êtes pas familier avec l'ajout de snippets de code à votre site, une méthode plus simple consiste à utiliser WPCode. C'est le meilleur plugin de snippets de code pour WordPress qui vous aide à ajouter du code personnalisé sans risquer de casser votre site.

Tout d'abord, vous devrez installer et activer le plugin WPCode. Si vous avez besoin d'aide, consultez notre guide sur comment installer un plugin WordPress.

Après activation, vous pouvez aller dans Code Snippets + Ajouter un snippet depuis le tableau de bord WordPress, puis cliquer sur l'option « Ajouter votre code personnalisé (Nouveau snippet) ».

Ajouter un nouveau fragment de code personnalisé dans WPCode

Après cela, vous pouvez coller le code personnalisé dans la zone de prévisualisation du code et entrer un titre en haut.

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

Entrez un extrait de code personnalisé

Après avoir entré le code, faites simplement défiler vers le bas pour sélectionner la section Insertion.

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

Méthodes d'insertion pour les extraits dans WPCode

Une fois que vous avez terminé, enregistrez simplement le snippet et activez-le.

Pour plus de détails, consultez notre guide sur comment ajouter du code personnalisé dans WordPress.

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

Supprimer les articles en double lors de l'utilisation de plusieurs articles dans 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 voudrez peut-être aussi consulter notre guide sur comment désactiver n'importe quel nombre d'articles dans une boucle WordPress et comment rendre les publications importantes dans WordPress.

Si cet article vous a plu, abonnez-vous à notre chaîne YouTube pour des tutoriels vidéo WordPress. Vous pouvez également nous retrouver sur Twitter et Facebook.

Avis : Notre contenu est financé par nos lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons percevoir une commission. Voir comment WPBeginner est financé, pourquoi c'est important et comment vous pouvez nous soutenir. Voici notre processus éditorial.

La boîte à outils WordPress ultime

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tout professionnel devrait posséder !

Interactions des lecteurs

15 CommentsLeave a Reply

  1. Quelqu'un pourrait-il me dire comment faire ? Je suis vraiment nouveau dans ce domaine et j'ai besoin d'aide, s'il vous plaît, donnez-moi un exemple clair avec l'ID de la publication, comment la stocker ? Disons que la mienne est 1527.

  2. J'exécute 2 boucles avant les boucles d'une catégorie spécifique dans laquelle je voudrais éviter les doublons. Alors, comment stocker les ID dans le tableau des deux premières boucles ?

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

  4. Cette méthode fonctionne bien tant que les deux boucles sont situées dans le même fichier.
    Mais lorsque je place la première boucle dans le header.php et une autre dans le index.php,
    in_array($post->ID, $do_nit_duplicate) renvoie null.
    Que puis-je faire ?

  5. Bon après-midi à tous,

    est-ce que cela fonctionnera pour mon problème actuel d'affichage double des publications sur le site ? il affiche littéralement une copie sous les publications et le bouton 1, 2, ->

    le site est J'ai désactivé réactivé les plugins je deviens littéralement fou.

  6. pouvez-vous m'aider ?
    J'ai un problème avec des catégories en double sur mon site

    s'il vous plaît
    #merci

  7. @sergeyvlasov – Merci, cela a fonctionné pour moi

    bien que j'aie changé

    $do_nit_duplicate en $do_not_duplicate

    ;)

  8. Je pense qu'il y a un défaut dans cet algorithme. Il ne peut repérer qu'une (1) duplication. Donc la ligne magique ressemblerait à
     
    $do_not_duplicate[] = $post->ID
     
    et ensuite utilisée comme
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Laisser un commentaire

Merci d'avoir choisi de laisser un commentaire. N'oubliez pas que tous les commentaires sont modérés conformément à 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.