You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:25:35