如何将php变量传递给WordPress AJAX处理程序

10 浏览
0 Comments

如何将php变量传递给WordPress AJAX处理程序

在functions.php中,我努力将一些php变量传递到我的ajax处理程序函数中。下面提供的示例不起作用,可能与钩子有关,但我找不到如何做到这一点的任何信息:\n

/*取消订阅*/
$test_variable = "derp";
function user_unsubscribe($test_variable){
  echo json_encode($test_variable);
  wp_die();
};
add_action('wp_ajax_user_unsubscribe', 'user_unsubscribe');
add_action('wp_ajax_nopriv_user_unsubscribe', 'user_unsubscribe');

0
0 Comments

如何将php变量传递给WordPress AJAX处理程序

在WordPress中,向ajax传递变量的首选方法是将它们添加到请求中,并从$_GET$_POST中读取它们。如果您需要其他变量,您可以使用全局变量或调用额外的函数。

以下代码是一个示例,尝试将一些php变量传递给functions.php中的ajax处理程序函数。但是,这个示例不起作用,可能与钩子有关,但我找不到任何关于如何解决这个问题的信息:

function user_unsubscribe(){
  $test_variable = get_test_variable();
  echo json_encode($test_variable);
  wp_die();
};
add_action('wp_ajax_user_unsubscribe', 'user_unsubscribe');
add_action('wp_ajax_nopriv_user_unsubscribe', 'user_unsubscribe');
function get_test_variable() {
    // 在这里获取/获取您的变量;
    /*取消订阅*/
    $test_variable = "derp";
    return $test_variable;
}

根据官方文档,我们可以通过将变量添加到请求中并从$_GET$_POST中读取它们来解决这个问题。但是,在这个特定的示例中,我们可以使用全局变量或调用额外的函数来传递变量。

0
0 Comments

问题的原因是在WordPress中,想要将PHP变量传递给AJAX处理程序。解决方法是通过jQuery的AJAX函数发送请求,并在data参数中传递PHP变量的值。在这个例子中,通过将'test_variable'的值设置为'Test Value',将PHP变量的值传递给AJAX处理程序。以下是解决方法的代码:

在jQuery文件中:

jQuery(document).ready(function($) {    
    $('#btn').on('click',function(){
      $.ajax({ 
           data: {action: 'get_listing_names','test': global.test_variable},
           type: 'post',
           url: global.ajax,
           success: function(data) {
            console.log(data);
          }
      });
    });
});

在functions.php文件中:

 admin_url( 'admin-ajax.php' ),
            'test_variable' => 'Test Value',
        )
    );
}
add_action( 'wp_enqueue_scripts', 'ja_global_enqueues' );
add_action('wp_ajax_nopriv_get_listing_names', 'ajax_listings');
add_action('wp_ajax_get_listing_names', 'ajax_listings');
function ajax_listings() {
    $test_variable = $_POST['test_variable'];
    wp_send_json_success( $test_variable );        
}

以上是解决方法的代码。

0
0 Comments

问题的原因是如何将PHP变量传递给WordPress的AJAX处理程序。解决方法是使用以下代码:

/*取消订阅*/
$test_variable = "derp";
function user_unsubscribe($test_variable){
  echo json_encode($test_variable);
  wp_die();
};
add_action('wp_ajax_user_unsubscribe', function() use ($test_variable){
  user_unsubscribe($test_variable);
});
add_action('wp_ajax_nopriv_user_unsubscribe', function() use ($test_variable){
  user_unsubscribe($test_variable);
});

在这个解决方案中,我们首先声明了一个名为$test_variable的PHP变量,然后创建了一个名为user_unsubscribe的函数,该函数接受一个参数$test_variable。在函数内部,我们使用json_encode将$test_variable编码为JSON格式,并使用wp_die()函数终止WordPress AJAX请求。

接下来,我们使用add_action函数将user_unsubscribe函数绑定到wp_ajax_user_unsubscribe和wp_ajax_nopriv_user_unsubscribe动作上。通过使用use关键字,我们可以将$test_variable传递给这两个动作。

这样,当发起名为user_unsubscribe的AJAX请求时,WordPress将调用user_unsubscribe函数,并将$test_variable作为参数传递给它。函数将$test_variable编码为JSON,并将其返回给AJAX请求。

这种方法允许我们在WordPress的AJAX处理程序中传递PHP变量,并在处理程序中使用它们。

0