如何将php变量传递给WordPress AJAX处理程序
如何将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');
如何将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
中读取它们来解决这个问题。但是,在这个特定的示例中,我们可以使用全局变量或调用额外的函数来传递变量。
问题的原因是在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 ); }
以上是解决方法的代码。
问题的原因是如何将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变量,并在处理程序中使用它们。