Tutoriale WordPress de încredere, atunci când aveți cea mai mare nevoie.
Ghidul începătorului pentru WordPress
Cupa WPB
25 de milioane+
Site-uri web care folosesc plugin-urile noastre
16+
Ani de experiență WordPress
3000+
Tutoriale WordPress de la experți

Cum să eviți afișarea duplicată a postărilor cu bucle multiple în WordPress

Dacă utilizați mai multe interogări WordPress pentru a afișa diferite seturi de postări, este posibil să întâlniți conținut duplicat. Acest lucru se datorează faptului că unele postări ar putea corespunde mai multor bucle și apar de două ori.

WordPress nu vine cu o opțiune încorporată pentru a evita postările duplicate în mai multe bucle. Cu toate acestea, din cei peste 15 ani de experiență în gestionarea diferitelor site-uri WordPress, am învățat cum să evităm această problemă. Așadar, am creat un fragment de cod personalizat pe care îl puteți adăuga pe site-ul dvs. și puteți evita afișarea postărilor duplicate în diferite bucle.

În acest articol, vă vom arăta cum să evitați cu ușurință afișarea duplicată a postărilor cu bucle multiple în WordPress.

Evitarea postărilor duplicate atunci când lucrezi cu bucle WordPress multiple

Cum apar postările duplicate în buclele WordPress multiple

Când creezi o temă WordPress personalizată sau un șablon de pagină personalizat, s-ar putea să ai uneori nevoie să folosești mai multe bucle WordPress.

De exemplu, ați putea dori să afișați cele mai recente postări alături de cele mai populare postări ale site-ului dvs. Afișând toate postările din fiecare categorie, ați putea, de asemenea, să ajutați cititorii să găsească conținut interesant.

În toate aceste exemple, un singur post poate corespunde criteriilor pentru mai multe bucle. Când se întâmplă acest lucru, WordPress va afișa conținut duplicat.

Acest conținut duplicat poate face ca site-ul dvs. să pară dezordonat și neprofesionist. De asemenea, ocupă spațiu pe ecran fără a adăuga valoare.

Deoarece generați dinamic postări pentru fiecare buclă, nu puteți prezice manual dacă o postare duplicat va apărea în mai multe bucle.

Acestea fiind spuse, să analizăm o modalitate ușoară de a evita postările duplicate atunci când lucrați cu mai multe bucle în WordPress.

Evitarea postărilor duplicate în bucle multiple WordPress

Pentru acest ghid, vă vom arăta un exemplu de cod WordPress care cauzează eroarea de postare duplicată și apoi vom partaja un fragment de cod care rezolvă problema.

Când creezi o temă copil WordPress sau un șablon personalizat, codul tău poate fi complet diferit. Cu toate acestea, poți folosi fragmentul nostru de cod ca punct de plecare și apoi să-l modifici pentru a se potrivi propriului tău site web.

Mai întâi, să creăm o problemă de postări duplicate. În următorul cod de exemplu, afișăm toate postările din categoria „travel” și toate postările din categoria „news” fără a evita postările duplicate:

/******  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();
?>

După cum puteți vedea, acest cod nu verifică postările duplicate în niciunul dintre query.

Dacă o postare aparține atât categoriei „știri”, cât și categoriei „călătorii”, atunci va apărea de două ori, așa cum puteți vedea în imaginea următoare.

Cum să eviți afișarea duplicată a postărilor cu bucle multiple în WordPress

Să rezolvăm această problemă.

Pentru a evita postările duplicate pe blogul dvs. WordPress, va trebui să stocați temporar datele despre toate postările afișate în prima buclă.

Odată ce aveți acele informații, puteți modifica a doua interogare pentru a opri apariția postărilor duplicate în a doua buclă:

/******  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();
?>

În codul de mai sus, stocăm ID-urile postărilor într-un array numit $exclude. După aceea, adăugăm argumentul post__not_in la a doua interogare, care va exclude postările afișate în primul buclă.

Dacă nu sunteți familiarizat cu adăugarea de fragmente de cod pe site-ul dvs., atunci o modalitate mai ușoară este să folosiți WPCode. Este cel mai bun plugin pentru fragmente de cod pentru WordPress, care vă ajută să adăugați cod personalizat fără riscul de a vă defecta site-ul.

Mai întâi, va trebui să instalați și să activați pluginul WPCode. Dacă aveți nevoie de ajutor, consultați ghidul nostru despre cum să instalați un plugin WordPress.

La activare, puteți accesa Snippet-uri de cod + Adăugare Snippet din tabloul de bord WordPress și apoi faceți clic pe opțiunea „Adăugați codul dvs. personalizat (Snippet nou)”.

Adăugați un nou fragment de cod personalizat în WPCode

După aceea, puteți lipi codul personalizat în zona Previziune cod și puteți introduce un titlu în partea de sus.

Va trebui, de asemenea, să selectați „Tip cod” ca Snippet PHP, făcând clic pe meniul derulant.

Introduceți snippet de cod personalizat

După ce ai introdus codul, derulează pur și simplu în jos pentru a selecta secțiunea de Inserare.

Aici, puteți utiliza setarea implicită de „Inserare automată” și lăsați pluginul să adauge automat codul pe site-ul dvs.

Metode de inserare a fragmentelor în WPCode

Odată ce ați terminat, pur și simplu salvați fragmentul și activați-l.

Pentru mai multe detalii, te rugăm să consulți ghidul nostru despre cum să adaugi cod personalizat în WordPress.

Acum, dacă vizitați site-ul dvs. WordPress, veți vedea că postările duplicate au dispărut.

Eliminarea postărilor duplicate atunci când folosești mai multe postări în WordPress

Sperăm că acest articol v-a ajutat să învățați cum să evitați afișarea duplicată a postărilor cu bucle multiple în WordPress. De asemenea, ați putea dori să consultați ghidul nostru despre cum să dezactivați orice număr de postări în bucla WordPress și cum să faceți postări lipicioase în WordPress.

Dacă ți-a plăcut acest articol, te rugăm să te abonezi la canalul nostru de YouTube pentru tutoriale video WordPress. Ne poți găsi, de asemenea, pe Twitter și Facebook.

Dezvăluire: Conținutul nostru este susținut de cititori. Acest lucru înseamnă că dacă faceți clic pe unele dintre linkurile noastre, este posibil să câștigăm un comision. Vedeți cum este finanțat WPBeginner, de ce contează și cum ne puteți susține. Iată procesul nostru editorial.

Cel mai bun instrumentar WordPress

Obține acces GRATUIT la instrumentarul nostru - o colecție de produse și resurse legate de WordPress pe care fiecare profesionist ar trebui să le aibă!

Interacțiuni cu cititorii

15 CommentsLeave a Reply

  1. Ar putea cineva să-mi spună cum să fac asta? Sunt cu adevărat nou în acest domeniu și am nevoie de ajutor, vă rog să-mi dați un exemplu clar cu ID-ul postării, cum să-l stochez? Să zicem, al meu este 1527.

  2. Rulez 2 bucle înainte de buclele unei categorii specifice în care aș dori să evit duplicatele. Deci, cum stochez ID-urile în array din primele două bucle?

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

  4. Această metodă funcționează bine până când ambele bucle se află într-un singur fișier.
    Dar când pun prima buclă în header.php și pe cealaltă în index.php,
    in_array($post->ID, $do_nit_duplicate) returnează null.
    Ce pot face?

  5. Bună ziua tuturor,

    va funcționa acest lucru pentru problema mea actuală cu afișarea dublă a postărilor pe site? literal afișează o copie sub postări și butonul 1, 2, ->?

    Site-ul este... Am dezactivat și reactivat pluginuri, înnebunesc efectiv.

  6. @sergeyvlasov – Mulțumesc, a funcționat pentru mine

    tho i changed

    $do_nit_duplicate către $do_not_duplicate

    ;)

  7. Cred că există o eroare în acest algoritm. Nu poate detecta mai mult de 1 (una) duplicare. Deci linia magică ar arăta așa:
     
    $do_not_duplicate[] = $post->ID
     
    și apoi folosită așa:
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Lasă un răspuns

Vă mulțumim că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de comentarii, iar adresa dvs. de e-mail NU va fi publicată. Vă rugăm să NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.