WPML

Non c’è nulla da tradurre nell’integrazione con ElasticPress. Il plugin di compatibilità fa in modo che ElasticPress restituisca automaticamente 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:

Hai bisogno anche di un endpoint Elasticsearch: self-hosted o un servizio gestito come ElasticPress.io (si apre in una nuova scheda), Elastic Cloud o AWS OpenSearch. Configura ElasticPress con il tuo host Elasticsearch e conferma che l’indicizzazione avvenga con successo su un sito in un’unica 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.
  • Copie degli articoli non traducibili. L’indice di ogni lingua le 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 del plurale e dei tempi verbali sono tutti specifici per la lingua. È questo che fa in modo che la ricerca in francese corrisponda alle radici francesi e la ricerca in giapponese alla morfologia giapponese; senza un’analisi per lingua, il motore di ricerca applicherebbe le regole di una lingua al testo di tutte le altre lingue.

Per ogni ricerca del visitatore, WPML ElasticPress indirizza la query all’indice della lingua corrispondente. Il pool di risultati è già filtrato in base alla lingua corretta prima dell’inizio della classificazione per pertinenza.

Esegui la sincronizzazione iniziale

Con i quattro plugin attivi e un endpoint Elasticsearch configurato in ElasticPress, esegui la sincronizzazione iniziale:

  1. Apri ElasticPressSync nell’area di amministrazione di WordPress.
  2. Fai clic su Start Sync.

WPML ElasticPress attiva una sincronizzazione per lingua e crea gli indici per lingua uno dopo l’altro. Su un sito di grandi dimensioni questo processo 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 una nuova 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 racchiude 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 l’operazione per ogni lingua aggiuntiva. Ometti --setup in modo che le lingue precedentemente indicizzate rimangano invariate.

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; ridurla è utile sui server con memoria limitata.

Ricostruisci ogni indice da zero:

wp wpml_elasticpress sync --setup

Questo comando cancella tutti gli indici di lingua e li ricostruisce tutti. Usalo quando qualcosa sembra non funzionare in tutte le lingue o dopo un aggiornamento 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 su 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.
  • Fallito. I risultati di altre lingue appaiono accanto alle corrispondenze nella stessa lingua. La sincronizzazione potrebbe non essere stata completata per quella lingua: controlla ElasticPressSync 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.
  • Fallito. L’articolo appare nei risultati. Questo di solito significa che il tipo di post è impostato per ricorrere alla lingua predefinita in WPMLImpostazioniTraduzione dei tipi di post. Si tratta di un’impostazione a livello di WPML, non di un bug. Se non intendevi usare il fallback, modifica l’impostazione.

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.
  • Fallito. Appaiono articoli correlati di altre lingue. Conferma che la funzionalità Related Posts sia abilitata in ElasticPressFeatures e che l’indice della lingua per la lingua corrente abbia terminato la sincronizzazione.

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.
  • Fallito. I PDF di altre lingue appaiono nei risultati. Esegui nuovamente la sincronizzazione dopo aver abilitato Documents. Il comando wp wpml_elasticpress sync --setup ricostruisce ogni indice con l’indicizzazione dei documenti.

5. Le ricerche nel backend (termini, commenti, utenti) filtrano per lingua

Se hai abilitato le funzionalità Terms, Comments o Users in ElasticPressFeatures, cercale dall’area di amministrazione di WordPress e conferma che i risultati vengano filtrati in base alla lingua corrente dell’area di amministrazione. 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.
  • Fallito. Gli indici fratelli sono vuoti. Fermati, esegui nuovamente le sincronizzazioni sui siti interessati e segnala il problema al supporto 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 sul 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, .pptx e altri tipi di file.
  • Terms, Comments e Users. Ricerche nel backend.

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 ad allora, la ricerca di WooCommerce sui siti multilingue passa attraverso la gestione standard di WooCommerce Multilingual di WPML, non tramite ElasticPress.

Insidie comuni

  • La sincronizzazione non è stata eseguita dopo aver abilitato una nuova funzionalità di ElasticPress. L’abilitazione di Documents o Related Posts in ElasticPressFeatures non aggiunge retroattivamente quei documenti all’indice. Esegui nuovamente la sincronizzazione dopo aver attivato o disattivato le funzionalità.
  • Sincronizzazione WP-CLI senza --setup dopo un cambiamento importante. Se hai modificato quali tipi di post sono traducibili, quali funzionalità sono abilitate o hai aggiornato WPML ElasticPress superando il limite di una versione principale, esegui wp wpml_elasticpress sync --setup per ricostruire ogni indice da zero.
  • Il template dei risultati di ricerca del tema ignora i filtri di ElasticPress. Alcuni temi personalizzati implementano una 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 dell’area di amministrazione), il template del tema potrebbe dover essere aggiornato.
  • La ricerca dei prodotti WooCommerce restituisce risultati in lingue miste. Non si tratta di 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 ElasticPressFeatures e che sia stata eseguita una sincronizzazione dopo averla abilitata.

Scritto daAmir

Scritto daAmir