Come fare in modo che ElasticPress restituisca i risultati giusti per lingua
Scopri come configurare la ricerca multilingue su un sito WordPress che esegue WPML ed ElasticPress. Il plugin di compatibilità WPML ElasticPress crea un indice Elasticsearch separato per ogni lingua del tuo sito, in modo che un visitatore che effettua una ricerca dalla versione francese ottenga risultati in francese, mai mescolati con quelli in inglese o giapponese. Questa pagina illustra la configurazione, la sincronizzazione per lingua e, soprattutto, come verificare che la ricerca restituisca i risultati giusti in ogni lingua.
Non c’è nulla da tradurre nell’integrazione di ElasticPress. Il plugin di compatibilità fa in modo che ElasticPress restituisca automaticamente i risultati corretti per la lingua; il tuo compito è installare i componenti, eseguire la sincronizzazione iniziale e confermare che i risultati siano corretti.
Prima di iniziare
Installa e attiva questi plugin sullo stesso sito:
- ElasticPress. Il plugin open-source gratuito di 10up, disponibile su WordPress.org.
- WPML core più WPML Traduzione stringhe.
- WPML ElasticPress. Il plugin di compatibilità. Scaricalo dalla pagina dei download del tuo account WPML.
Hai anche bisogno di un endpoint Elasticsearch: self-hosted o un servizio gestito come ElasticPress.io, Elastic Cloud o AWS OpenSearch. Configura ElasticPress con il tuo host Elasticsearch e conferma che l’indicizzazione avvenga con successo su un sito in una sola lingua prima di aggiungere il livello WPML.
Configura le lingue di WPML prima di eseguire la prima sincronizzazione.
Come funziona l’indicizzazione per lingua
WPML ElasticPress crea un indice Elasticsearch separato per ogni lingua del tuo sito. L’indice di ciascuna lingua contiene:
- Le traduzioni in quella lingua per ogni tipo di post traducibile.
- Gli articoli nella lingua predefinita per qualsiasi tipo di post impostato per ricorrere alla lingua predefinita quando non esiste una traduzione.
- Le copie degli articoli non traducibili. L’indice di ogni lingua li include in modo che possano apparire nei risultati di ricerca indipendentemente dalla lingua del visitatore.
Ogni documento in un indice di lingua viene analizzato in quella lingua. Le stopword, lo stemming, le abbreviazioni, la gestione dei plurali e dei tempi verbali sono tutti specifici per la lingua. Questo è ciò che fa sì che la ricerca in francese corrisponda alle radici francesi e la ricerca in giapponese corrisponda alla morfologia giapponese; senza l’analisi per lingua, il motore di ricerca applicherebbe le regole di una lingua al testo di tutte le altre lingue.
Per ogni ricerca di un visitatore, WPML ElasticPress indirizza la query all’indice della lingua corrispondente. Il pool dei risultati è già filtrato per la lingua giusta prima che inizi il posizionamento per pertinenza.
Esegui la sincronizzazione iniziale
Con i quattro plugin attivi e un endpoint Elasticsearch configurato in ElasticPress, esegui la sincronizzazione iniziale:
- Apri ElasticPress > Sync nell’area di amministrazione di WordPress.
- Fai clic su Start Sync.
WPML ElasticPress avvia una sincronizzazione per lingua e crea gli indici per lingua uno dopo l’altro. Su un sito di grandi dimensioni questo può richiedere alcune ore; la pagina segnala i progressi man mano che la sincronizzazione viene eseguita.
Se stai aggiornando da WPML ElasticPress 1.0 alla versione 2.0 o successiva, esegui nuovamente l’indicizzazione. Il formato dell’indice è cambiato quando la versione 2.0 ha introdotto gli indici per lingua.
Dopo la sincronizzazione iniziale, gli aggiornamenti dei contenuti confluiscono automaticamente nell’indice corretto. Ogni volta che crei, modifichi o elimini un articolo, WPML ElasticPress aggiorna l’indice della lingua corrispondente in background, in base alla lingua di quell’articolo o all’impostazione di traduzione per il suo tipo di post.
Indicizzare lingue specifiche con WP-CLI
Per i siti di grandi dimensioni, i processi pianificati, gli script di distribuzione o qualsiasi flusso di lavoro in cui l’interfaccia utente dell’area di amministrazione non è un’opzione, WPML ElasticPress fornisce un comando WP-CLI (wp wpml_elasticpress sync) che avvolge la sincronizzazione CLI di ElasticPress e aggiunge un flag --post-lang per la selezione della lingua.
Esegui la sincronizzazione iniziale solo per gli articoli in inglese:
wp wpml_elasticpress sync --setup --post-type=post --post-lang=en
Il flag --setup cancella gli indici esistenti prima della ricostruzione. Dopo questo comando, la ricerca in inglese restituisce risultati in inglese; le ricerche da altre lingue non restituiscono nulla perché i loro indici non sono ancora stati creati.
Aggiungi una seconda lingua senza cancellare gli indici esistenti:
wp wpml_elasticpress sync --post-type=post --post-lang=fr
Ripeti per ogni lingua aggiuntiva. Ometti --setup in modo che le lingue precedentemente indicizzate rimangano al loro posto.
Sincronizza più lingue in un’unica esecuzione:
wp wpml_elasticpress sync --post-lang=en,es
Regola la dimensione del batch se la memoria è limitata:
wp wpml_elasticpress sync --per-page=200
La dimensione predefinita del batch è 350; abbassarla aiuta sui server con memoria limitata.
Ricostruisci ogni indice da zero:
wp wpml_elasticpress sync --setup
Questo cancella ogni indice di lingua e li ricostruisce tutti. Usalo quando qualcosa sembra sbagliato in tutte le lingue o dopo un upgrade importante.
Come verificare che le ricerche di ElasticPress restituiscano i contenuti nella lingua giusta
La sincronizzazione tecnica è semplice; il valore di questa pagina risiede nella verifica. Esegui questi controlli dopo il completamento della sincronizzazione iniziale e di nuovo ogni volta che modifichi contenuti o impostazioni che influiscono sul comportamento della ricerca.
1. La ricerca restituisce risultati nella stessa lingua da ogni lingua
Dal front-end, passa il selettore di lingua a ciascuna lingua a turno e cerca un termine che sai esistere in forma tradotta.
- Superato. La pagina dei risultati elenca solo gli articoli in quella lingua.
- Non superato. I risultati di altre lingue appaiono accanto alle corrispondenze nella stessa lingua. La sincronizzazione potrebbe non essere stata completata per quella lingua: controlla ElasticPress > Sync per eventuali errori ed esegui nuovamente il comando WP-CLI specifico per la lingua.
2. I contenuti solo nella lingua di origine restituiscono zero risultati nelle altre lingue
Scegli un articolo che esiste solo nella tua lingua predefinita, senza traduzione nelle altre lingue del sito. Da una versione del sito in una lingua non predefinita, cerca una frase di quell’articolo.
- Superato. Zero risultati. L’articolo non è tradotto nella lingua del visitatore, quindi non dovrebbe apparire.
- Non superato. L’articolo appare nei risultati. Questo di solito significa che il tipo di post è impostato per ricorrere alla lingua predefinita in WPML > Impostazioni > Traduzione dei tipi di post. Questa è un’impostazione a livello di WPML, non un bug. Se non intendevi usare il fallback, modifica l’impostazione.
3. Gli articoli correlati rimangono nella stessa lingua
Apri un articolo tradotto sul front-end. Il widget Related Posts dovrebbe elencare solo altri articoli nella stessa lingua.
- Superato. Ogni articolo correlato rimanda a contenuti nella stessa lingua della pagina corrente.
- Non superato. Appaiono articoli correlati di altre lingue. Conferma che la funzionalità Related Posts sia abilitata in ElasticPress > Features e che l’indice della lingua per la lingua corrente abbia terminato la sincronizzazione.
4. La ricerca dei documenti filtra per lingua
Se la funzionalità Documents è abilitata in ElasticPress: carica un PDF tradotto nella versione in lingua di origine di un articolo, quindi carica un PDF in una lingua diversa nella sua traduzione. Cerca una frase che appare solo nel PDF tradotto.
- Superato. La ricerca dal front-end nella lingua corrispondente restituisce il PDF giusto; la ricerca nella lingua di origine non restituisce il PDF tradotto e viceversa.
- Non superato. I PDF di altre lingue appaiono nei risultati. Esegui nuovamente la sincronizzazione dopo aver abilitato Documents. Il comando
wp wpml_elasticpress sync --setupricostruisce ogni indice con l’indicizzazione dei documenti.
5. Le ricerche nel back-end (termini, commenti, utenti) filtrano per lingua
Se hai abilitato le funzionalità Terms, Comments o Users in ElasticPress > Features, cercale dall’area di amministrazione di WordPress e conferma che i risultati vengano filtrati in base alla lingua di amministrazione corrente. Questo influisce sugli utenti che effettuano ricerche nel back-end di un sito multilingue.
6. La sincronizzazione multisito non cancella gli indici dei siti fratelli
Se esegui WPML ed ElasticPress su una rete multisito, esegui una sincronizzazione dell’indice su un sito e poi controlla gli altri siti della rete. I loro indici dovrebbero essere ancora intatti.
- Superato. L’indicizzazione di un sito lascia intatti gli indici dei siti fratelli.
- Non superato. Gli indici fratelli sono vuoti. Fermati, esegui nuovamente le sincronizzazioni sui siti interessati e segnala il problema al Supporto di WPML in modo che possano confermare se stai riscontrando un problema storico del multisito o uno nuovo.
Se tutti i controlli precedenti vengono superati, la tua ricerca multilingue funziona come previsto.
Funzionalità di ElasticPress supportate
Attualmente WPML ElasticPress rende le seguenti funzionalità di ElasticPress sensibili alla lingua:
- Post Search. Ricerca dal front-end tra articoli, pagine e tipi di post personalizzati.
- Related Posts. Il widget degli articoli correlati filtra in base alle corrispondenze nella stessa lingua.
- Documents. Ricerca all’interno di PDF allegati,
.docx,.pptxe altri tipi di file. - Terms, Comments, and Users. Ricerche nel back-end.
Le funzionalità di ricerca specifiche per WooCommerce di ElasticPress (scoperta dei prodotti, filtraggio a faccette dei prodotti, ricerca istantanea dei prodotti nei cataloghi) non sono attualmente multilingue. La copertura multilingue per la ricerca di WooCommerce è nella roadmap di WPML; fino a quando non sarà disponibile, la ricerca di WooCommerce sui siti multilingue passa attraverso la gestione standard di WooCommerce Multilingual di WPML, non attraverso ElasticPress.
Le insidie comuni
- La sincronizzazione non è stata eseguita dopo l’abilitazione di una nuova funzionalità di ElasticPress. L’abilitazione di Documents o Related Posts in ElasticPress > Features non aggiunge retroattivamente quei documenti all’indice. Esegui nuovamente la sincronizzazione dopo aver attivato o disattivato le funzionalità.
- Sincronizzazione WP-CLI senza
--setupdopo una modifica importante. Se hai modificato quali tipi di post sono traducibili, quali funzionalità sono abilitate o hai effettuato l’upgrade di WPML ElasticPress oltrepassando il limite di una versione principale, eseguiwp wpml_elasticpress sync --setupper ricostruire ogni indice da zero. - Il template dei risultati di ricerca del tema aggira i filtri di ElasticPress. Alcuni temi personalizzati implementano la propria query per i risultati di ricerca che non passa attraverso ElasticPress. Se i risultati sembrano sbagliati solo sul front-end (e superano i controlli nell’area di amministrazione), il template del tema potrebbe aver bisogno di un aggiornamento.
- La ricerca dei prodotti di WooCommerce restituisce risultati in lingue miste. Questo non è un problema di sincronizzazione. È la lacuna di copertura di WooCommerce menzionata sopra. Per ora, indirizza la ricerca dei prodotti attraverso la gestione standard di WooCommerce Multilingual.
- Il testo dei documenti non appare nella ricerca. Conferma che la funzionalità Documents sia abilitata in ElasticPress > Features e che sia stata eseguita una sincronizzazione dopo averla abilitata.
Scritto da Amir · Ultimo aggiornamento: 2 luglio 2026
Scritto da Amir · Ultimo aggiornamento 2 luglio 2026