显示活动语言标志
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 的官方 documentation,icl_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.
我正在使用 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 的官方 documentation,icl_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.