WPML фрагменты кода
Определение языка страницы WPML
Определение текущего языка страницы:
<?php global $sitepress; $current_lang = $sitepress->get_current_language(); ?>
Вывод контента в коде на определенном языке
Для вывода переводов контента в коде страницы потребуется установить плагин WPML Shortcodes (автор Mirco Babini):
<?php wpml_e__if_language( '', 'uk' ); wpml_e__if_language( '', 'ru' ); wpml_e__if_language( '', 'en' ); ?>
Вывод переключателя языков
Этот код поможет получить перечень доступных на странице языков и их правильные называния:
<?php if ( function_exists('icl_get_languages') ) { $languages = icl_get_languages('skip_missing=1&orderby=code&order=asc'); foreach ( $languages as $language ) : echo $language['native_name'].' '; endforeach; } ?>
Пример вывода переключателя языков #1
<div class=""> <?php if ( function_exists('icl_get_languages') ) { $languages = icl_get_languages('skip_missing=1&orderby=code&order=asc'); $lang_active = ''; $langs_other = ''; foreach ( $languages as $language ) : /* Перебираем все языки, устанавливаем выводимое краткое название и класс. Класс нужен (к примеру) для случаев, когда мы добавляем иконку флага. */ switch ($language['native_name']) { case 'English': $lang_short = 'Eng'; $lang_class = 'si_wpml_icon_eng'; break; case 'Türkçe': $lang_short = 'Tur'; $lang_class = 'si_wpml_icon_tur'; break; case 'Русский': $lang_short = 'Ru'; $lang_class = 'si_wpml_icon_rus'; break; } /* Проверяем, активный ли текущий язык (активный язык не должен быть ссылкой) */ if ( $language['active'] == '1' ) { // активный $lang_active = '<div><i class="'.$lang_class.'">'.$lang_short.'</i></div>'; } else { // не активный $langs_other .= '<a href="'.$language['url'].'"><i class="'.$lang_class.'">'.$lang_short.'</i></a>'; } endforeach; } /* Выводим полученную информацию */ echo $lang_active; echo $langs_other; ?> </div>
Пример вывода переключателя языков #2
<?php if ( function_exists('icl_get_languages') ) { $languages = icl_get_languages('skip_missing=1&orderby=code&order=asc'); foreach ( $languages as $language ) : switch ($language['native_name']) { case 'English': $lang_short = 'EN'; break; case 'Ukrainian': $lang_short = 'UA'; break; case 'Русский': $lang_short = 'RU'; break; } //echo $language['native_name']; if ( $language['active'] == '1' ) { // активный echo '<div class="lang"><span>'.$lang_short.'</span></div>'; } else { echo '<div class="lang"><a href="'.$language['url'].'">'.$lang_short.'</a></div>'; } endforeach; }
Отключаем подключение лишнего в WPML
Как в WPML отключить подключение css в виде генерации строки вида?
<link rel="stylesheet" id="wpml-legacy-horizontal-list-0-css" href="http://sitename.domein/wp-content/plugins/sitepress-multilingual-cms/templates/language-switchers/legacy-list-horizontal/style.css?ver=1" type="text/css" media="all">
Открываем консоль WordPress, переходим в настройки плагина WPML. Как правило они находятся по адресу:
https://sitename.domein/wp-admin/admin.php?page=sitepress-multilingual-cms%2Fmenu%2Flanguages.php
После чего меняем окончание Flanguages.php на Ftroubleshooting.php.
Перед нами откроется консоль поиска/решения проблем, в которой мы жмем на кнопку «Очистить кэш WPML». У меня после этого проблема исчезла, никаких побочных эффектов выявлено не было. Но всё же рекомендую сделать перед правками бекап сайта.
wpml_e__if_language больше не работает как часть стандартного WPML-плагина. Вам нужно установить дополнительный плагин (название WPML Shortcodes, автор Mirco Babini), и после этого Вы сможете использовать этот запрос как раньше 🙂