文章目录
- 1安全,WordPress 本身进行了很复杂的安全性优化,如果我们都自己写是很浪费时间和资源的。 2兼容,由于文件是公用的,提供了通用的钩子,其它插件都可以参与进去。 3高效,这个不解释了,既符合原则(执行到了 init 钩子),又兼顾了效率问题。 4方便,一个钩子即可输出代码,都不用判断条件。 基本就这几点了,网上查了一下,发现关于此文件的资料并不多,于是看了下源码,发现使用其实很简单。
- 首先请求这个文件: 代码如下 echo admin_url( 'admin-ajax.php' ); 向admin-ajax.php发送请求的时候, 有一个必须的参数是action, 因为admin-ajax.php需要根据用户是否登陆了来触发不同的hooks 代码如下 // 如果没登陆, 会触发这个hook do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ); // 如果登陆了, 会触发这个hook do_action( 'wp_ajax_' . $_POST['action'] ); 发出Ajax请求的代码大概如下: jQuery.post( MyAjax.ajaxurl, { action : 'myajax-submit', postID : MyAjax.postID }, function( response ) { alert( response ); } ); 现在, 我们只需要在我们的主题文件中处理一下Ajax请求, 并不需要在单独的文件中来处理 代码如下 add_action( 'wp_ajax_nopriv_myajax-submit', 'myajax_submit' ); add_action( 'wp_ajax_myajax-submit', 'myajax_submit' ); function myajax_submit() { $postID = $_POST['postID']; $response = json_encode( array( 'success' => true ) ); header( "Content-Type: application/json" ); echo $response; // 这个很关键啊有木有: 别忘记 "exit" exit; } 在登录和未登录的情况下会分别调用 wp_ajax_nopriv_action参数内容 和 wp_ajax_action参数内容,所以在这里输出即可,具体可以研究下 admin-ajax.php 文件。
1安全,WordPress 本身进行了很复杂的安全性优化,如果我们都自己写是很浪费时间和资源的。
2兼容,由于文件是公用的,提供了通用的钩子,其它插件都可以参与进去。
3高效,这个不解释了,既符合原则(执行到了 init 钩子),又兼顾了效率问题。
4方便,一个钩子即可输出代码,都不用判断条件。
基本就这几点了,网上查了一下,发现关于此文件的资料并不多,于是看了下源码,发现使用其实很简单。
首先请求这个文件:
代码如下
echo admin_url( 'admin-ajax.php' );
向admin-ajax.php发送请求的时候, 有一个必须的参数是action, 因为admin-ajax.php需要根据用户是否登陆了来触发不同的hooks
代码如下
// 如果没登陆, 会触发这个hook
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
// 如果登陆了, 会触发这个hook
do_action( 'wp_ajax_' . $_POST['action'] );
发出Ajax请求的代码大概如下:
jQuery.post(
MyAjax.ajaxurl,
{
action : 'myajax-submit',
postID : MyAjax.postID
},
function( response ) {
alert( response );
}
);
现在, 我们只需要在我们的主题文件中处理一下Ajax请求, 并不需要在单独的文件中来处理
代码如下
add_action( 'wp_ajax_nopriv_myajax-submit', 'myajax_submit' );
add_action( 'wp_ajax_myajax-submit', 'myajax_submit' );
function myajax_submit() {
$postID = $_POST['postID'];
$response = json_encode( array( 'success' => true ) );
header( "Content-Type: application/json" );
echo $response;
// 这个很关键啊有木有: 别忘记 "exit"
exit;
}
在登录和未登录的情况下会分别调用 wp_ajax_nopriv_action参数内容 和 wp_ajax_action参数内容,所以在这里输出即可,具体可以研究下 admin-ajax.php 文件。