Dodano 2020-11-18 23:07:11 przez Daniel
Ostatnio napotkałem ciekawy problem związany z tłumaczeniem strony opcji ACF. Jako że przeważnie jak robię proste strony internetowe zawsze wykorzystuję wtyczkę ACF i do stałych elementów na stronie typu informacje w stopce wykorzystuję stronę opcji napotkałem problem przy wielu językach.
Wtyczka PolyLang doskonale się nadaje do tłumaczenia stron oraz zaawansowanych pól ACF jednak przy stronie opcji pojawia się problem polegający na konieczności wykupienia wersji premium wtyczki. Jednak da się to stosunkowo prosto obejść.
Na początek aby dalsze kroki miały jakikolwiek sens trzeba zainstalować wtyczkę ACF i utworzyć stronę opcji, najprościej w pliku functions.php szablonu (o ile robimy własny szablon a zakładam że właśnie robimy).
if (function_exists('acf_add_options_page')) { acf_add_options_page(); }
Dalej dodajemy jakieś pola do strony opcji przez kokpit całkowicie standardowo. Teraz standardowo aby wyświetlić zawartość takiego pola należy zrobić po prostu
echo get_field('menu-1-etykieta', 'option');
Teraz pojawia się problem jak to przetłumaczyć i tutaj wykorzystamy możliwości polylang do tłumaczenia stringów.
echo pll_e(get_field('menu-1-etykieta', 'option'));
Trzeba jeszcze dodać rejestrację stringa
add_action('init', function() { pll_register_string('menu-1-etykieta', get_field('menu-1-etykieta', 'option')); });
I teraz aby przetłumaczyć string należy zapisać pola strony opcji, następnie wejść w języki i tłumaczenia ciągów tekstowych. Nasze pole powinno być tam możliwe do przetłumaczenia.
Ważne by zdawać sobie sprawę z tego że nie jest to najbardziej eleganckie rozwiązanie za to nie mam pomysłu jak można to zrobić prościej w implementacji.