用于子域的语言切换器

时间:2015-05-25 作者:Peter_mjt

我们正在运行一个包含希腊语内容(政治和经济分析)的wordpress网站,我们想为我们的网站建立一个英语网站。

英文网站将在主网站的子域中安装自己的wordpress。如果主站点是http://www.analyst.gr 那么英语网站将http://en.analyst.gr.

我所面临的问题是,我无法为语言转换程序找到合适的解决方案。理想情况下,我想要一个语言切换器,它可以识别浏览器语言并相应地重定向,并将语言存储在cookie中,如果用户选择其他站点来存储该选择。

例如,如果我通过输入url分析访问主站点。gr(或跟随一些链接)并登陆主主页,然后切换语言,有效地转到en。分析师gr我想存储此信息,以便下次访问分析师时使用。gr它会自动将我重定向到en。分析师gr公司

我尝试使用WPML,但它假设不同的语言使用vhosts 目前,不需要对帖子和菜单进行映射。

2 个回复
SO网友:cjbj

从你的问题中,我推断你想要三件事:

读取cookie以查看用户的首选语言here. 您可以将语言代码存储在cookie中并检索它,然后将其存储在变量中$wpse189348_lang. 使用以下代码可以轻松检测浏览器语言:

$wpse189348_lang = substr($_SERVER[\'HTTP_ACCEPT_LANGUAGE\'], 0, 2);
// $wpse189348_lang will end up as \'en\' or \'fr\' or some other language code, but may be empty
正如您所见,这种方法并非万无一失here. 现在您有了语言代码$wpse189348_lang 您可以使用此redirect 国际用户访问希腊语网站(“el”是希腊语的语言代码)。

add_action (\'after_setup_theme\', wpse189348_lang_redirect);
function wpse189348_lang_redirect {
  // read cookie and/or browser language here to get $wpse189348_lang
  if (\'el\' == $wpse189348_lang) {
    wp_redirect( \'http://www.analyst.gr\' );
    exit;
    }
  }
由于国际网站可以有许多不同的语言代码,因此您可以使用否定测试以另一种方式重定向:

  if (\'el\' !== $wpse189348_lang) {
    wp_redirect( \'http://en.analyst.gr\' );
    exit;
    }
请注意,这是一种相当粗糙的重定向方式。任何更微妙的事情都需要一个插件或大量的工作。

SO网友:T.Todua

要将语言切换器用于多站点wordpress,我建议使用几个插件:

(1)MultiLanguage Site Framework - 在顶部和上方的帖子中也有语言/标志切换器,以及其他选项。。

(2)MultiSite language switcher - 仅为标志/语言添加切换器。

结束

相关推荐

Functions.php中的入队样式

这对我没用functions.php: if( is_page_template( \'template-flat.php\' ) ) { function flatsome_scripts() { wp_enqueue_style( \'flatsome-style\', get_template_directory_uri() .\'/flatash/css/foundation.css\', array(), \'2.1\', \'all\'); }