我有一个ajax脚本,它将从onchange上的select from中获取一个值。这在控制台上运行良好。日志我可以看到正确的值。我的select表单会触发重新加载,在重新加载页面之前,我会在控制台中看到该值。
我想使用此值为WPML设置后端语言,但不确定如何使用该值。
PHP
function my_action( ) {
$dropdown_shop_order_language = $_POST[\'dropdown_shop_order_language\'];
echo json_encode($dropdown_shop_order_language);
wp_die();
}
add_action(\'wp_ajax_my_action\', \'my_action\');
add_action(\'wp_ajax_nopriv_my_action\', \'my_action\');
这将给我一个
de
,
en
或
nl
Example of function to change language:
add_action(\'wp_loaded\', \'my_icl_set_current_language\');
function my_icl_set_current_language() {
global $sitepress;
$sitepress->switch_lang(\'de\');
}
这就是我想要的:
$sitepress->switch_lang($dropdown_shop_order_language);
这里最好的方法是什么?
This doesnt work:
add_action(\'wp_loaded\', \'my_icl_set_current_language\');
function my_icl_set_current_language() {
global $sitepress;
$sitepress->switch_lang($dropdown_shop_order_language);
}
SO网友:Jacob Peattie
您尝试的主要问题是,变量不会在请求之间持久化。如果在AJAX请求上设置了变量,则不会在重新加载页面的请求上设置该变量。
另一个问题是您将其称为;更改语言的函数示例:
add_action(\'wp_loaded\', \'my_icl_set_current_language\');
function my_icl_set_current_language() {
global $sitepress;
$sitepress->switch_lang($dropdown_shop_order_language);
}
这里有三件事:
函数,my_icl_set_current_language()
.函数中更改语言的代码拨打add_action()
它告诉WordPress何时运行该函数您只需要#2,只需将其放入AJAX回调中:
function my_action( ) {
global $sitepress;
$dropdown_shop_order_language = $_POST[\'dropdown_shop_order_language\'];
$sitepress->switch_lang($dropdown_shop_order_language);
}
add_action(\'wp_ajax_my_action\', \'my_action\');
add_action(\'wp_ajax_nopriv_my_action\', \'my_action\');