Elementor Loop Grid: Come Risolvere il Bug dei Post Duplicati

Categoria: Guide, Wordpress

Se stai usando il widget Loop Grid di Elementor Pro e hai notato che la paginazione carica sempre gli stessi post, pagina dopo pagina, non sei solo. Dopo ore passate a controllare ogni singola impostazione, la frustrante conclusione è quasi sempre la stessa: non è un errore di configurazione.

Si tratta, infatti, di un conflitto noto con due cause tecniche principali, entrambe documentate all’interno della community di sviluppatori su piattaforme come GitHub. Il problema può derivare da:

  1. Un’interferenza con query personalizzate tramite l’hook pre_get_posts.
  2. Un’errata interpretazione degli URL paginati, che genera un falso errore 404.

In questo articolo analizzeremo entrambe le cause e forniremo la soluzione specifica per ciascuna.

Qual è la Causa del Bug?

A seconda della configurazione del tuo sito, il problema può avere due origini distinte.

Causa 1: Conflitto con pre_get_posts

Questa è una causa molto comune su siti personalizzati. Gli sviluppatori usano l’hook pre_get_posts per modificare la query principale di WordPress prima che venga eseguita (ad esempio, per escludere categorie o cambiare l’ordine dei post su una pagina archivio).

Il problema sorge perché il widget Loop Grid di Elementor esegue una sua query separata e non “eredita” le modifiche apportate da pre_get_posts. Di conseguenza:

  • La query principale di WordPress sa come gestire la paginazione.
  • La query del Loop Grid, invece, ignora questa informazione e, a ogni clic sulla paginazione, esegue la sua ricerca ripartendo sempre da pagina 1.

Causa 2: Falso Errore 404 sulla Paginazione

In altri casi, specialmente se non stai usando pre_get_posts, il problema è più semplice. A causa di conflitti tra plugin o di alcune configurazioni dei permalink, WordPress interpreta erroneamente l’URL di una pagina paginata (es. /pagina/2/) come una pagina che non esiste (errore 404).

Quando questo accade, invece di mostrare una pagina di errore, il sistema tenta di essere “intelligente” e reindirizza l’utente alla pagina “base” (la prima pagina dell’archivio), causando la ricarica dei post iniziali e dando l’impressione che la paginazione sia rotta.

La Soluzione: Due Snippet per Due Problemi

A seconda della causa, dovrai usare uno snippet di codice diverso.

Consiglio: Se sai di usare pre_get_posts per personalizzare gli archivi, prova prima la Soluzione 1. Altrimenti, o se la prima non funziona, passa alla Soluzione 2.

Dove Inserire il Codice?

Puoi inserire lo snippet scelto in due modi:

  1. File functions.php del Child Theme (Consigliato): Da Aspetto > Editor del file del tema.
  2. Plugin di Snippet: Usando un plugin come Code Snippets.

Soluzione 1 (Per il conflitto con pre_get_posts)

Questo codice sincronizza la paginazione della query principale con quella del Loop Grid.

/**
 * Risolve il conflitto di paginazione del Loop Grid di Elementor
 * quando si utilizza l'hook pre_get_posts.
 */
add_action( 'elementor/query/query_results', function( $query ) {
	if ( ! $query->is_main_query() ) {
		$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
		$query->set( 'paged', $paged );
	}
} );

Soluzione 2 (Per il falso errore 404)

Questo codice impedisce a WordPress di considerare le pagine paginate come un errore.

/**
 * Risolve il problema della paginazione che mostra ripetutamente gli stessi post
 * prevenendo un reindirizzamento errato causato da un falso errore 404.
 */
function pre_handle_404( $preempt, $wp_query ) {
    if ( isset( $wp_query->query['page'] ) && $wp_query->query['page'] ) {
        return true;
    }
    return $preempt;
}
add_filter( 'pre_handle_404', 'pre_handle_404', 10, 2 );

Passaggi Finali

  1. Salva le Modifiche: Salva il file functions.php o attiva lo snippet.
  2. Svuota la Cache: È fondamentale svuotare tutte le cache (plugin, server, CDN) e quella del browser.
  3. Verifica il Risultato: Torna sulla pagina con il Loop Grid e testa la paginazione.

Conclusione

Anche se frustrante, questo problema è quasi sempre risolvibile con uno dei due metodi sopra descritti. Identificare la causa corretta è il primo passo per applicare la soluzione giusta e ripristinare la piena funzionalità del tuo sito.

Leggi anche...