为了账号安全,请及时绑定邮箱和手机立即绑定

在 ajax 调用中将 php 变量传递给 add_filter

在 ajax 调用中将 php 变量传递给 add_filter

PHP
胡说叔叔 2023-05-12 14:18:39
我正在尝试将我在 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 变量传递给过滤器(使用类或全局变量)但没有任何效果。ajax 调用只需要一个输入字段值。我需要将值传递给过滤器。我已经花了几个小时在这上面但没有运气 :( 任何帮助将不胜感激!
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

问题是 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

   };

}


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信