Заметки для меня и коллег. Темы — разработка, продвижение сайтов, заработок в интернете.

Мультиязычность WPML: вывод переключателя языков

Этот код поможет определить, какие переводы есть у материала, и какое оригинальное название языка:

<?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;
}
?>

 

<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.'</div>';
                    } else { // не активный
                        $langs_other .= '<a href="'.$language['url'].'"><i class="'.$lang_class.'">'.$lang_short.'</a>';
                    }
            endforeach;
    }
  
  /* Выводим полученную информацию */
  echo $lang_active;
  echo $langs_other;
    ?>
</div>

Комментарии к статье