显示活动语言标志

Showing active language flag

我正在使用 WPML 和他的切换器来更改网站的语言。到目前为止一切正常,除了活动语言标志未更改为显示当前语言。

这是我到目前为止编写的代码。它只是始终显示第一个标志并且不会将其更改为活动标志。

<?php
if(function_exists('icl_get_languages')):
    $languages = icl_get_languages('skip_missing=0');
    if(count($languages) >= 1):
?>
        <div class="topbar-lang-switcher">
            <ul class="lang-switcher-polylang"> 
<?php 
        foreach((array)$languages as $language):            
?>
                <li class="current-lang"> 
                    <a rel="alternate" hreflang="<?php echo $language['language_code']; ?>" href="<?php echo $language['url']; ?>">
                    <img src="<?php echo $language['country_flag_url']; ?>" alt="<?php echo $language['native_name']; ?>" title="<?php echo $language['native_name']; ?>" />
                    <span><?php echo $language['language_code']; ?>  </span>  
                    </a> 
                </li>
<?php
        endforeach;
?>
            </ul>
        </div>
<?php
    endif;
endif;
?> 

有人可以帮助解决如何将标志更改为当前活动语言的问题吗?

根据 WPML 的官方 documentationicl_get_languages() 函数 returns 具有以下格式的语言数组:

Array
(
 [en] => Array
  (
   [id] => 1
   [active] => 1
   [native_name] => English
   [missing] => 0
   [translated_name] => English
   [language_code] => en
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/en.png
   [url] => http://yourdomain/about
  )

 [fr] => Array
  (
   [id] => 4
   [active] => 0
   [native_name] => Français
   [missing] => 0
   [translated_name] => French
   [language_code] => fr
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/fr.png
   [url] => http://yourdomain/fr/a-propos
  )

 [it] => Array
  (
   [id] => 27
   [active] => 0
   [native_name] => Italiano
   [missing] => 0
   [translated_name] => Italian
   [language_code] => it
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/it.png
   [url] => http://yourdomain/it/circa
  )
)

有一个 active 字段,它说明了当前的语言。所以你可以有这样的东西:

...
        foreach((array)$languages as $language):            
?>
                <li <?php echo ($language['active'] == 1) ? 'class="current-lang"' : '' ?>> 
                    <a rel="alternate" hreflang="<?php echo $language['language_code']; ?>" href="<?php echo $language['url']; ?>">
                    <img src="<?php echo $language['country_flag_url']; ?>" alt="<?php echo $language['native_name']; ?>" title="<?php echo $language['native_name']; ?>" />
                    <span><?php echo $language['language_code']; ?>  </span>  
                    </a> 
                </li>
<?php
        endforeach;
...

这样只有活动(当前)语言的 <li> 才会有 current-lang class。之后您需要做的就是申请权利 CSS.