WPML – tłumaczenie strony w WordPress i problem wyszukiwania

Wyszukiwarka wielojęzykowa z WPML

Najpopularniejsza wtyczka tłumaczeniowa w WordPress posiada setki opcji, zaczynając od tłumaczenia podstawowych wyrażeń, ciągów niestandardowych znaków szablonu po automatyczne aktualizacje walut, mimo to nie jest idealna. Gdy na stronie mamy kilka języków i chcemy wyszukać frazę w języku aktualnie ustawionej strony domyślnie system wyświetli nam wyniki ale ustawi domyślny język, co gorsze nie pokaże wyników w innych językach niż domyślny.

Na szczęście z pomocą przychodzi kod jaki musimy dodać w 2 miejscach, dzięki temu wyniki wyszukiwania uwzględnią inne języki, a cała strona zachowa aktualnie ustawiony język.

Pierwszy kod odpowiedzialny jest za dopisanie danego języka do wyniku wyszukiwania, dzięki temu Rezultat wyszukiwania będzie w ustawionym języku a nie domyślnym, dodajemy go w pliku formularza, zazwyczaj jest to plik: searchform.php

 <input type="hidden" name="lang" value="<?php echo(ICL_LANGUAGE_CODE); ?>"/>

Kod dodajemy w obrębie formularza np. przed przyciskiem submit

 <input type="hidden" name="lang" value="<?php echo(ICL_LANGUAGE_CODE); ?>"/>   <input value="" type="submit">   </form>

Dzięki temu uzyskamy taki wynik zapytania: ?search_category=&post_type=product&s=nazwaproduktu&lang=pl

Drugie miejsce, odpowiedzialne za poprawne wyświetlenie wszystkich poszukiwanych elementów w danym języku (dla sklepu będą to produkty, dla bloga artykuły) to plik functions.php naszego aktualnie włączonegoszablonu:

add_action( 'pre_get_posts', 'wpml_custom_search' );  function wpml_custom_search( $query ) {  if( is_search() ) {   $query->query_vars['suppress_filters'] = true;   }   return $query;  }