在PHP函数中使用来自AJAX调用的值

时间:2021-10-17 作者:user2059370

我有一个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, ennl

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);
}

1 个回复
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\');