Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🔗 Post correlati in Elementor tramite un filtro query personalizzato

🔗 Post correlati in Elementor tramite un filtro query personalizzato

Il widget Post standard in Elementor Pro può fare tre cose: post recenti, per categoria e un elenco manuale. Ma quando serve un blocco «Post correlati» sotto un articolo, che abbini il post corrente per tag e categorie, non esiste un’opzione integrata. È vero che il menu a tendina Sorgente ha una voce «Correlati» dalla versione 2.5, ma la logica è elementare: post delle stesse categorie senza alcun peso di corrispondenza. Il risultato è prevedibile: il blocco sembra una selezione casuale più che un suggerimento sensato.

L’obiettivo: mantenere il design delle card di Elementor ma affidare la query a un plugin di terze parti che calcola la pertinenza su tutte le tassonomie collegate contemporaneamente. Il risultato è un blocco «Post correlati» in cui ogni post successivo è realmente più vicino a ciò che il lettore sta visualizzando in quel momento, invece di limitarsi a riempire la griglia.

Il metodo si basa su puro PHP, senza componenti aggiuntivi e senza modificare i template. Elementor genera la card, il plugin Related Posts By Taxonomy calcola gli ID e l’hook elementor/query/{$query_id} collega i due elementi. Dieci minuti di configurazione e il blocco è attivo.

💡 Panoramica rapida:

  • Installa il plugin gratuito Related Posts By Taxonomy: trova post correlati per categorie, tag e tassonomie personalizzate condivise, senza overhead sul frontend.
  • Nel widget Post di Elementor Pro, imposta un Query ID univoco; questa stringa diventerà il nome dell’hook per intercettare WP_Query.
  • Aggiungi uno snippet PHP al sito: la funzione recupera un array di ID dal plugin e lo passa alla query di Elementor tramite post__in.
  • Regola quantità, ordinamento, template di output e caching tramite i filtri del plugin in base alle tue esigenze.

Il plugin Related Posts By Taxonomy è presente nel repository ufficiale di WordPress.org dal 2014. A giugno 2026, versione 2.7.9, testato fino a WordPress 7.0, oltre 10.000 installazioni attive. L’autore, Kees Meijer, mantiene il plugin con costanza: l’ultima release è uscita pochi giorni prima di questa pubblicazione.

Il punto di forza principale è l’impronta minima. Nessun pannello di amministrazione nella dashboard, nessuno script aggiuntivo sul frontend, nessuna scrittura sul database. Tutta la configurazione avviene tramite filtri e attributi shortcode. Per uno sviluppatore è un vantaggio: installazione pulita, comportamento prevedibile, zero appesantimenti.

L’algoritmo classifica i post in base al numero di termini tassonomici condivisi. Un post che accumula il maggior numero di corrispondenze su categorie e tag con l’articolo corrente ottiene la priorità più alta. Il plugin funziona non solo con categorie e tag standard; rileva le tassonomie personalizzate registrate tramite WooCommerce, ACF o CPT UI. E poiché supporta i custom post type, il blocco «Post correlati» può apparire anche su pagine portfolio e in sezioni personalizzate.

Configurare il widget Post in Elementor

Aggiungi il widget Post dalla libreria di Elementor Pro alla tua pagina Single Post Template. Configura lo skin (Card o Classic) e ottieni il design desiderato: immagine in evidenza, titolo, data, estratto. In questa fase il widget mostra gli ultimi post del blog, ed è previsto che sia così.

Ora il passaggio chiave. Nella barra laterale di modifica, apri la scheda Query. Trova il campo Query ID e inserisci un identificatore univoco, ad esempio related_posts_by_tax. Questa stringa esatta diventerà il nome dell’hook elementor/query/related_posts_by_tax, che useremo per intercettare la query.

Campo ID query nelle impostazioni del widget Post di Elementor Pro

Il parametro Query ID è disponibile in Elementor Pro dalla versione 2.0. È stato progettato specificamente per gli sviluppatori: imposti un identificatore stringa e poi colleghi la tua funzione di callback all’hook elementor/query/{your_id}. La documentazione dettagliata si trova sul portale sviluppatori di Elementor.

Lascia le restanti impostazioni della Query (Post Type, Tassonomie, Ordina per) così come sono. Continuano ad applicarsi e il nostro filtro si aggiunge sopra. Ad esempio, se il Post Type del widget è impostato su «Post», il plugin Related Posts By Taxonomy cercherà voci correlate solo tra i post del blog.

Snippet PHP: collegare i due plugin

Il codice consiste in una singola chiamata add_action e una breve funzione. Chiama il metodo km_rpbt_get_related_posts() del plugin, recupera un array di ID post pertinenti e lo passa a WP_Query tramite il parametro post__in.

Aggiungi lo snippet al file functions.php del tuo tema child o tramite il plugin Code Snippets:

1/**
2 * Replaces the Elementor Posts widget query with related posts.
3 * Uses the Related Posts By Taxonomy plugin.
4 *
5 * @param \WP_Query $query The Elementor query object.
6 */
7add_action( 'elementor/query/related_posts_by_tax', 'sdstudio_related_posts' );
8function sdstudio_related_posts( $query ) {
9 global $post;
10
11 $related_ids = km_rpbt_get_related_posts(
12 $post->ID,
13 array( 'fields' => 'ids' )
14 );
15
16 if ( ! empty( $related_ids ) ) {
17 $query->set( 'post__in', $related_ids );
18 $query->set( 'orderby', 'post__in' );
19 }
20}

Analisi riga per riga:

  • elementor/query/related_posts_by_tax è l’hook il cui nome corrisponde al Query ID nel widget. Se hai usato un ID diverso, sostituisci la stringa.
  • global $post dà accesso al post corrente, che funge da punto di partenza.
  • km_rpbt_get_related_posts() è la funzione del plugin che restituisce un array di ID post correlati. Il parametro 'fields' => 'ids' velocizza la query: il plugin non recupera oggetti completi.
  • $query->set( 'post__in', $related_ids ) limita rigorosamente WP_Query ai soli post trovati.
  • $query->set( 'orderby', 'post__in' ) preserva l’ordine restituito dal plugin, dal più pertinente al meno.

Tecnicamente vengono eseguite due query: prima il plugin trova gli ID, poi Elementor recupera gli oggetti completi in base a quegli ID. In pratica, con 3-5 post correlati l’overhead è trascurabile. Per le massime prestazioni, attiva l’opzione di cache persistente del plugin; memorizza i risultati per una durata specificata.

Perfezionare l’output

Lo snippet qui sopra è la versione base. Da qui, la query può essere personalizzata per le tue esigenze specifiche.

Limitare la quantità. Per impostazione predefinita il plugin restituisce fino a 5 post. Per cambiare il limite, passa il parametro posts_per_page:

1$related_ids = km_rpbt_get_related_posts(
2 $post->ID,
3 array(
4 'fields' => 'ids',
5 'posts_per_page' => 3,
6 )
7);

Escludere il post corrente. Il plugin lo fa automaticamente, ma se vuoi una protezione extra, aggiungi $query->set( 'post__not_in', array( $post->ID ) ).

Limitare per data. Mostra solo i post degli ultimi 12 mesi:

1$related_ids = km_rpbt_get_related_posts(
2 $post->ID,
3 array(
4 'fields' => 'ids',
5 'limit_month' => 12,
6 )
7);

Cambiare il template di output. Il plugin supporta template HTML personalizzati tramite il filtro rpbt_template. Inserisci un file related-posts-by-taxonomy.php nella cartella del tema e il markup è completamente tuo. La documentazione con esempi si trova sul sito dell’autore; per un plugin gratuito è sorprendentemente dettagliata.

Modalità Ajax. Se il blocco dei post correlati si trova molto sotto la piega della pagina, attiva il caricamento lazy tramite il filtro rpbt_ajax_load; il plugin recupererà i post in modo asincrono senza influire sul First Contentful Paint.

Questo video del team Elementor mostra la gestione avanzata delle query in azione, inclusa la selezione dei post correlati e il filtro per data:

⁉️🤔 Domande frequenti

Elementor Pro è necessario per questo metodo?

Sì, il filtro query personalizzato elementor/query/{$query_id} è disponibile solo in Elementor Pro. La versione gratuita non ha un widget Post con un campo Query ID.

Cosa succede se il plugin non trova post correlati?

Assicurati che i tuoi post condividano tassonomie comuni. Il plugin cerca corrispondenze su tutte le tassonomie pubbliche collegate al post type. Se i post sono distribuiti su categorie non sovrapposte, non ci saranno post correlati. Imposta un fallback: ad esempio, mostra gli ultimi post della stessa categoria.

Questo approccio può essere usato con i custom post type?

Sì. Specifica il Post Type desiderato nelle impostazioni della Query del widget Elementor e il plugin Related Posts By Taxonomy rileverà automaticamente le tassonomie registrate per quel tipo. Il metodo funziona con portfolio, prodotti WooCommerce e qualsiasi CPT.

Il metodo funziona con un tema a blocchi (Full Site Editing)?

Il widget Post di Elementor Pro non dipende dal tema; funziona sia con temi classici sia con temi a blocchi. Il requisito fondamentale è che il template Single Post sia gestito tramite il Theme Builder di Elementor.

In cosa questo metodo è migliore dell’opzione «Correlati» integrata in Elementor?

L’opzione integrata filtra semplicemente i post per le stesse categorie, senza considerare il numero di corrispondenze e senza supporto per le tassonomie personalizzate. Related Posts By Taxonomy classifica i post su tutte le tassonomie collegate simultaneamente e restituisce quelli più pertinenti, non solo «della stessa categoria».

Se il filtro manuale valga lo sforzo

Sui blog piccoli con una manciata di categorie, l’opzione «Correlati» integrata in Elementor Pro è più che sufficiente. Ma non appena compaiono tassonomie personalizzate, più post type o la necessità di controllare con precisione la logica di corrispondenza, un filtro manuale tramite elementor/query/{$query_id} diventa l’unica soluzione pulita, senza acquistare componenti aggiuntivi.

Il plugin Related Posts By Taxonomy risolve il problema a costo zero e non aggiunge codice extra sul frontend. La configurazione richiede 10 minuti e il risultato è un blocco «Post correlati» pertinente che trattiene i visitatori sul sito più a lungo di una selezione casuale di pubblicazioni recenti.

Provalo in un ambiente di test: avvia un WordPress locale, installa il plugin e Elementor Pro, aggiungi lo snippet e verifica che il metodo funzioni esattamente come ti serve.