我正在做一点语言检测,首先检查$_SERVER[\'HTTP_ACCEPT_LANGUAGE\']
. 如果用户希望覆盖语言选择,那么会有一个选择列表,用户可以在其中选择自己喜欢的任何语言。
所以:我需要首先检查$_POST
superglobal包含选择列表中的值。如果是的话,我想做个饼干。如果没有$_POST
值集,然后我检查是否有cookie,如果没有cookie,我将继续使用$_SERVER[\'HTTP_ACCEPT_LANGUAGE\']
作为默认语言。
代码如下所示:
function rps_set_language_preferences() {
global $language;
if( isset( $_POST[\'sprak\'] ) ) {
$possible_langs = array( \'en\', \'de\', \'ko\' );
$my_cookie = $_POST[\'sprak\'];
if( in_array( $my_cookie, $possible_langs ) ) {
setcookie( \'sprak\', $my_cookie, time() + 60*60*24*365, COOKIEPATH, COOKIE_DOMAIN );
$language = $my_cookie;
}
} else {
if( isset( $_COOKIE[\'sprak\'] ) ) {
$language = $_COOKIE[\'sprak\'];
} else {
/* This function checks the $_SERVER[\'HTTP_ACCEPT_LANGUAGE\'] */
$language = rps_detectlanguage();
}
}
}
add_action( \'wp\', \'rps_set_language_preferences\' );
但是。。。这不管用!
如果我试着用\'wp\'
在cookie出现之前,我需要刷新屏幕两次。我想它没有及时设置,但我不知道如何确保它会及时设置!
有什么建议吗?