WordPress多语言下拉菜单问题:当前语言无国旗及标题设置
解决Polylang下拉菜单当前语言无国旗的问题
你的问题出在pll_current_language('name')这个函数——它只会返回当前语言的纯文本名称,不会生成国旗图片的HTML结构,所以下拉标题里只有文字没有国旗。
直接修改代码,获取当前语言的国旗URL并手动拼接即可,同时保留你原本的下拉逻辑:
<ul class="lang" id="top-lang"> <li class="pll-parent-menu-item"> <?php // 获取当前语言的完整信息,包括国旗URL $current_lang_slug = pll_current_language('slug'); $current_lang_data = pll_get_language($current_lang_slug); $current_lang_name = $current_lang_data['name']; $current_lang_flag = $current_lang_data['flag']; ?> <a href="#pll_switcher"> <!-- 输出国旗图片,可自行调整样式 --> <img src="<?php echo esc_url($current_lang_flag); ?>" alt="<?php echo esc_attr($current_lang_name); ?>" style="margin-right: 6px; vertical-align: middle;"> <?php echo esc_html($current_lang_name); ?> </a> <ul class="sub-menu"> <?php if(function_exists('pll_the_languages')){ // 子菜单依然隐藏当前语言,只显示其他带国旗的语言选项 pll_the_languages(array('display_names_as' => 'name', 'hide_current' => 1, 'show_flags'=>1)); } ?> </ul> </li> </ul>
代码说明:
pll_get_language($current_lang_slug):拉取当前语言的完整数据,包含国旗地址、名称、标识等信息esc_url()、esc_attr()、esc_html():做安全转义处理,避免网站出现XSS风险- 可以修改
<img>标签的style属性,调整国旗的大小、间距,适配你的网站头部样式
如果需要让下拉标题点击后跳转当前语言首页,把href="#pll_switcher"替换为href="<?php echo esc_url(pll_home_url($current_lang_slug)); ?>"即可。
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

