Language Switch Function

时间:2016-10-11 作者:user3005390

我添加了一个函数来显示导航菜单中的语言按钮,但问题是我有多个菜单,它复制了结果。如何指定要在哪个菜单中显示语言按钮?

这是我的代码:

function new_nav_menu_items($items,$args) {

  if (function_exists(\'icl_get_languages\') && !empty($args->theme_location)) {
    $languages = icl_get_languages();
    $current_lang = ICL_LANGUAGE_CODE;

    $nitem = "";
    if(count($languages) >= 1){
        foreach($languages as $l){
            if( $l[\'language_code\'] != $current_lang ) {
                $nitem .= \'<li class="menu-item"><a href="\'.$l[\'url\'].\'"> \'.$l[\'native_name\'].\'</a></li>\';
            }
        }
      }
    }
  return $items . $nitem;
  }

add_filter( \'wp_nav_menu_items\', \'new_nav_menu_items\', 10,2 );

1 个回复
SO网友:cjbj

您现在只测试主题位置是否不为空。这意味着每个非空菜单位置都将看到附加的语言按钮。

因此,你应该测试一个特定的位置,而不是测试是否有空。这个name of that location depends on your theme, 但假设它被称为“主菜单”,您会有:

if (function_exists(\'icl_get_languages\') && ($args->theme_location == \'primary-menu\'))

相关推荐

如何在自定义php代码中使用WordPress$polylang->Model->set_post_language?

我正在创建一个自定义内容引擎,发布艺术品内容(从dropbox上传图像,从Excel电子表格中的数据构建内容,使用自定义表进行内容管理等)我的问题是,我想发布和链接通过wordpress创建和发布的EN和ES内容。在这里,您可以看到由于$polylang和模型对我的代码不可用而失败的代码。// Insert the post into the database if($record->language == \'EN\') { if ($p