Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

Come evitare la visualizzazione di post duplicati con loop multipli in WordPress

Se stai utilizzando query WordPress multiple per visualizzare diversi set di post, potresti imbatterti in contenuti duplicati. Questo perché alcuni post potrebbero corrispondere a più di un loop e apparire due volte.

WordPress non dispone di un'opzione integrata per evitare post duplicati in loop multipli. Tuttavia, nella nostra esperienza di oltre 15 anni nella gestione di diversi siti WordPress, abbiamo imparato come evitare questo problema. Pertanto, abbiamo creato uno snippet di codice personalizzato che puoi aggiungere al tuo sito ed evitare che post duplicati vengano visualizzati in loop diversi.

In questo articolo, ti mostreremo come evitare facilmente la visualizzazione di post duplicati con loop multipli in WordPress.

Evitare post duplicati quando si lavora con cicli multipli di WordPress

Come appaiono i post duplicati nei loop multipli di WordPress

Quando crei un tema WordPress personalizzato o un modello di pagina personalizzato, potresti a volte dover utilizzare più loop di WordPress.

Ad esempio, potresti voler mostrare i tuoi post recenti accanto ai post più popolari del tuo sito. Visualizzando tutti i post in ogni categoria, potresti anche aiutare i lettori a trovare contenuti interessanti.

In tutti questi esempi, un singolo post può soddisfare i criteri per loop multipli. Quando ciò accade, WordPress visualizzerà contenuti duplicati.

Questi contenuti duplicati possono far apparire il tuo sito disordinato e poco professionale. Occupano anche spazio sullo schermo senza aggiungere valore.

Poiché stai generando dinamicamente post per ogni ciclo, non puoi prevedere manualmente se un post duplicato apparirà in più cicli.

Detto questo, diamo un'occhiata a un modo semplice per evitare post duplicati quando si ha a che fare con più cicli in WordPress.

Evitare post duplicati in più cicli di WordPress

Per questa guida, ti mostreremo del codice di esempio per WordPress che causa l'errore di post duplicato e poi condivideremo uno snippet di codice che risolve il problema.

Quando crei un tema figlio di WordPress o un template personalizzato, il tuo codice potrebbe essere completamente diverso. Tuttavia, puoi usare il nostro snippet di codice come punto di partenza e poi modificarlo per adattarlo al tuo sito web.

Innanzitutto, creiamo un problema di post duplicati. Nel seguente codice di esempio, stiamo mostrando tutti i post nella categoria 'travel' e tutti i post nella categoria 'news' senza evitare post duplicati:

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

Come puoi vedere, questo codice non controlla i post duplicati in nessuna delle due query.

Se un post appartiene sia alla categoria 'news' che a quella 'travel', allora apparirà due volte, come puoi vedere nell'immagine seguente.

Come evitare la visualizzazione di post duplicati con cicli multipli in WordPress

Risolviamo questo problema.

Per evitare post duplicati sul tuo blog WordPress, dovrai memorizzare temporaneamente i dati di tutti i post visualizzati nel primo ciclo.

Una volta che hai quelle informazioni, puoi modificare la seconda query per impedire che i post duplicati appaiano nel secondo ciclo:

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

Nel codice sopra, stiamo memorizzando gli ID dei post in un array chiamato $exclude. Dopodiché, stiamo aggiungendo l'argomento post__not_in alla seconda query, che escluderà i post che sono stati visualizzati nel primo ciclo.

Se non hai familiarità con l'aggiunta di snippet di codice al tuo sito, un modo più semplice è usare WPCode. È il miglior plugin per snippet di codice per WordPress che ti aiuta ad aggiungere codice personalizzato senza rischiare di danneggiare il tuo sito.

Innanzitutto, dovrai installare e attivare il plugin WPCode. Se hai bisogno di aiuto, consulta la nostra guida su come installare un plugin WordPress.

Dopo l'attivazione, puoi andare su Code Snippets + Add Snippet dalla dashboard di WordPress e quindi fare clic sull'opzione ‘Add Your Custom Code (New Snippet)’.

Aggiungi un nuovo snippet di codice personalizzato in WPCode

Successivamente, puoi incollare il codice personalizzato nell'area Code Preview e inserire un titolo in alto.

Dovrai anche selezionare il ‘Code Type’ come PHP Snippet facendo clic sul menu a discesa.

Inserisci snippet di codice personalizzato

Dopo aver inserito il codice, scorri semplicemente verso il basso per selezionare la sezione Insertion.

Qui, puoi usare l'impostazione predefinita di ‘Auto Insert’ e lasciare che il plugin aggiunga automaticamente il codice al tuo sito.

Metodi di inserimento per snippet in WPCode

Una volta terminato, salva semplicemente lo snippet e attivalo.

Per maggiori dettagli, consulta la nostra guida su come aggiungere codice personalizzato in WordPress.

Ora, se visiti il tuo sito web WordPress, vedrai che i post duplicati sono scomparsi.

Rimozione di post duplicati quando si utilizzano più post in WordPress

Speriamo che questo articolo ti abbia aiutato a imparare come evitare la visualizzazione di post duplicati con loop multipli in WordPress. Potresti anche voler consultare la nostra guida su come disabilitare qualsiasi numero di post in un loop di WordPress e come rendere i post in evidenza in WordPress.

Se ti è piaciuto questo articolo, iscriviti al nostro canale YouTube per tutorial video su WordPress. Puoi anche trovarci su Twitter e Facebook.

Dichiarazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

15 CommentsLeave a Reply

  1. Qualcuno potrebbe dirmi come fare? Sono davvero nuovo a questo e ho bisogno di aiuto, per favore datemi un esempio chiaro con l'ID del post, come memorizzarlo? Diciamo che il mio è 1527.

  2. Sto eseguendo 2 loop prima dei loop di una categoria specifica in cui vorrei evitare duplicati. Quindi come memorizzo gli ID nell'array dai primi due loop?

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

  4. Questo metodo funziona bene finché entrambi i 2 cicli si trovano in un unico file.
    ma quando metto il primo ciclo in header.php e un altro in index.php,
    in_array($post->ID, $do_nit_duplicate) restituisce null.
    cosa posso fare?

  5. Buon pomeriggio a tutti,

    funzionerà per il mio problema attuale con la visualizzazione doppia dei post sul sito? visualizza letteralmente una copia sotto i post e il pulsante 1, 2, ->

    il sito è ho disattivato riattivato i plugin sto letteralmente impazzendo.

  6. @sergeyvlasov – Grazie, ha funzionato per me

    anche se ho cambiato

    $do_nit_duplicate in $do_not_duplicate

    ;)

  7. Penso che ci sia un difetto in questo algoritmo. Può individuare non più di 1 (una) duplicazione. Quindi la riga magica sarebbe
     
    $do_not_duplicate[] = $post->ID
     
    e poi usata come
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti, e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.