在 ajax 调用中将 php 变量传递给 add_filter
Passing php variable in ajax call to add_filter
我正在尝试将在 ajax 调用中收到的变量传递给 add_filter 函数。
这是我的代码
add_action('wp_ajax_mht_set_partial_payment_amount', 'mht_set_partial_payment_amount');
add_action('wp_ajax_nopriv_mht_set_partial_payment_amount', 'mht_set_partial_payment_amount');
function mht_set_partial_payment_amount(){
$amount = $_POST["partial_payment_amount"];
add_filter('woo_wallet_partial_payment_amount', function($partial_payment){
return $amount;
}, 10, 1);
echo json_encode($amount);
die();
}
$amount 在响应中完全没问题,但它在过滤器中根本不起作用。
我尝试了许多其他方法将 $amount 变量传递给过滤器(使用 class 或全局变量)但没有任何效果。
ajax 调用只需要一个输入字段值。我需要将值传递给过滤器。
我在这上面花了好几个小时,但运气不好 :( 非常感谢任何帮助!
问题是 AJAX 函数与用户页面分开运行。所以我想当你添加过滤器时它永远不会执行,因为它是一个 AJAX 调用而不是构建页面。我会做一个 $_SESSION 变量来临时存储值并在钩子中使用它,如:
function mht_set_partial_payment_amount(){
if (!empty($_POST["partial_payment_amount"]) {
$_SESSION['my-amount"] = $_POST["partial_payment_amount"];
echo json_encode($amount);
}
wp_die(); // Use wp_die for ajax functions.
}
始终添加过滤器来执行调用,但只有 $_SESSION 变量存在时才会执行内部代码:
add_filter('woo_wallet_partial_payment_amount', function($partial_payment){
if (!empty($_SESSION["my-amount"]) {
//EXECUTE WHAT YOU WANT
};
}
我正在尝试将在 ajax 调用中收到的变量传递给 add_filter 函数。
这是我的代码
add_action('wp_ajax_mht_set_partial_payment_amount', 'mht_set_partial_payment_amount');
add_action('wp_ajax_nopriv_mht_set_partial_payment_amount', 'mht_set_partial_payment_amount');
function mht_set_partial_payment_amount(){
$amount = $_POST["partial_payment_amount"];
add_filter('woo_wallet_partial_payment_amount', function($partial_payment){
return $amount;
}, 10, 1);
echo json_encode($amount);
die();
}
$amount 在响应中完全没问题,但它在过滤器中根本不起作用。
我尝试了许多其他方法将 $amount 变量传递给过滤器(使用 class 或全局变量)但没有任何效果。
ajax 调用只需要一个输入字段值。我需要将值传递给过滤器。
我在这上面花了好几个小时,但运气不好 :( 非常感谢任何帮助!
问题是 AJAX 函数与用户页面分开运行。所以我想当你添加过滤器时它永远不会执行,因为它是一个 AJAX 调用而不是构建页面。我会做一个 $_SESSION 变量来临时存储值并在钩子中使用它,如:
function mht_set_partial_payment_amount(){
if (!empty($_POST["partial_payment_amount"]) {
$_SESSION['my-amount"] = $_POST["partial_payment_amount"];
echo json_encode($amount);
}
wp_die(); // Use wp_die for ajax functions.
}
始终添加过滤器来执行调用,但只有 $_SESSION 变量存在时才会执行内部代码:
add_filter('woo_wallet_partial_payment_amount', function($partial_payment){
if (!empty($_SESSION["my-amount"]) {
//EXECUTE WHAT YOU WANT
};
}