如何在wordpress中使用WPML插件自动跳转到页面的相应语言

如何在wordpress中使用WPML插件自动跳转到页面的相应语言,wordpress,Wordpress,我正在使用WPML建立一个多语言博客。 我可以很好地使用按钮来更改语言。 是否有任何方法可以根据访问者的语言自动跳转?我们使用WPML 2.4.1(多语言CMS版本),它包括此功能 WPML->语言->浏览器语言重定向 以下是屏幕上的文档说明: WPML可以根据浏览器语言自动重定向访问者 重要提示: 当启用缓存插件时,不应使用此功能。 禁用Cookie的访问者可能无法在语言之间切换 禁用浏览器语言重定向 仅当存在翻译时,根据浏览器语言重定向访问者 始终根据浏览器语言重定向访问者(如果缺少翻

我正在使用WPML建立一个多语言博客。 我可以很好地使用按钮来更改语言。 是否有任何方法可以根据访问者的语言自动跳转?

我们使用WPML 2.4.1(多语言CMS版本),它包括此功能

WPML->语言->浏览器语言重定向

以下是屏幕上的文档说明:

WPML可以根据浏览器语言自动重定向访问者

重要提示:

当启用缓存插件时,不应使用此功能。 禁用Cookie的访问者可能无法在语言之间切换

  • 禁用浏览器语言重定向

  • 仅当存在翻译时,根据浏览器语言重定向访问者

  • 始终根据浏览器语言重定向访问者(如果缺少翻译,则重定向到主页)

记住访客24小时的语言偏好

我们使用WPML2.4.1(多语言CMS版本),它包括这个功能

WPML->语言->浏览器语言重定向

以下是屏幕上的文档说明:

WPML可以根据浏览器语言自动重定向访问者

重要提示:

当启用缓存插件时,不应使用此功能。 禁用Cookie的访问者可能无法在语言之间切换

  • 禁用浏览器语言重定向

  • 仅当存在翻译时,根据浏览器语言重定向访问者

  • 始终根据浏览器语言重定向访问者(如果缺少翻译,则重定向到主页)

记住访客24小时的语言偏好


如果您希望自定义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