如何在wordpress中使用WPML插件自动跳转到页面的相应语言
我正在使用WPML建立一个多语言博客。 我可以很好地使用按钮来更改语言。 是否有任何方法可以根据访问者的语言自动跳转?我们使用WPML 2.4.1(多语言CMS版本),它包括此功能 WPML->语言->浏览器语言重定向 以下是屏幕上的文档说明: WPML可以根据浏览器语言自动重定向访问者 重要提示: 当启用缓存插件时,不应使用此功能。 禁用Cookie的访问者可能无法在语言之间切换如何在wordpress中使用WPML插件自动跳转到页面的相应语言,wordpress,Wordpress,我正在使用WPML建立一个多语言博客。 我可以很好地使用按钮来更改语言。 是否有任何方法可以根据访问者的语言自动跳转?我们使用WPML 2.4.1(多语言CMS版本),它包括此功能 WPML->语言->浏览器语言重定向 以下是屏幕上的文档说明: WPML可以根据浏览器语言自动重定向访问者 重要提示: 当启用缓存插件时,不应使用此功能。 禁用Cookie的访问者可能无法在语言之间切换 禁用浏览器语言重定向 仅当存在翻译时,根据浏览器语言重定向访问者 始终根据浏览器语言重定向访问者(如果缺少翻
- 禁用浏览器语言重定向
- 仅当存在翻译时,根据浏览器语言重定向访问者
- 始终根据浏览器语言重定向访问者(如果缺少翻译,则重定向到主页)
- 禁用浏览器语言重定向
- 仅当存在翻译时,根据浏览器语言重定向访问者
- 始终根据浏览器语言重定向访问者(如果缺少翻译,则重定向到主页)
如果您希望自定义WPML以允许记住访问者选择的最后一个语言首选项,则可以在WP functions.php中放置以下代码:
add_action('init', 'my_icl_set_current_language');
add_action('wp_loaded', 'my_icl_set_current_language');
function my_icl_set_current_language() {
$default_lang = 'en'; //set the default language code
$supported_lang = array('zh-hans', 'en'); //set the allowed language codes
$get_lang = $default_lang;
$langtemp = @$_COOKIE['lang'];
if (in_array($langtemp, $supported_lang)) $get_lang = $langtemp;
$langtemp = @$_GET['lang'];
if (in_array($langtemp, $supported_lang)) $get_lang = $langtemp;
if (in_array($get_lang, $supported_lang)) {
//save cookie setting
setcookie ('lang', $get_lang, time() + (10 * 365 * 24 * 60 * 60), '/');
global $sitepress;
if ( $sitepress->get_current_language() != $get_lang ) {
$sitepress->switch_lang($get_lang, true);
}
}
define('CURRENT_LANGUAGE_CODE', $get_lang); //use this constant to check the current language code instead of ICL_LANGUAGE_CODE
}
通过此自定义,访问者只需访问一次,然后就会记住首选项,并且所有未来请求的页面都应相应地显示所选语言,即简体中文,除非选择了其他语言或lang cookie已过期
如果您希望自定义WPML以允许记住访问者选择的最后一个语言首选项,则可以在WP functions.php中放置以下代码:
add_action('init', 'my_icl_set_current_language');
add_action('wp_loaded', 'my_icl_set_current_language');
function my_icl_set_current_language() {
$default_lang = 'en'; //set the default language code
$supported_lang = array('zh-hans', 'en'); //set the allowed language codes
$get_lang = $default_lang;
$langtemp = @$_COOKIE['lang'];
if (in_array($langtemp, $supported_lang)) $get_lang = $langtemp;
$langtemp = @$_GET['lang'];
if (in_array($langtemp, $supported_lang)) $get_lang = $langtemp;
if (in_array($get_lang, $supported_lang)) {
//save cookie setting
setcookie ('lang', $get_lang, time() + (10 * 365 * 24 * 60 * 60), '/');
global $sitepress;
if ( $sitepress->get_current_language() != $get_lang ) {
$sitepress->switch_lang($get_lang, true);
}
}
define('CURRENT_LANGUAGE_CODE', $get_lang); //use this constant to check the current language code instead of ICL_LANGUAGE_CODE
}
通过此自定义,访问者只需访问一次,然后就会记住首选项,并且所有未来请求的页面都应相应地显示所选语言,即简体中文,除非选择了其他语言或lang cookie已过期
为了改进Seh Horng的优秀答案,这里有相同的代码添加到
functions.php
,只是您不需要手动设置$default\u lang
和$supported\u lang
(它们是自动检索的):
为了改进Seh Horng的优秀答案,这里有相同的代码添加到
functions.php
,只是您不需要手动设置$default\u lang
和$supported\u lang
(它们是自动检索的):
你是如何获得访问者的语言的?我想我们可以使用$\u服务器['HTTP\u ACCEPT\u language']来获得它。你是如何获得访问者的语言的?我想我们可以使用$\u服务器['HTTP\u ACCEPT\u language']来获得它。我已经发布了一个基于你的答案,有一个小小的改进,可以避免手动输入
$default\u lang
和$supported\u lang
。我根据您的答案发布了一个答案,有一个小小的改进,可以避免手动输入$default\u lang
和$supported\u lang
。