用admin-ajax.php来处理Ajax请求
Ajax请求应该被指向wp-admin/admin-ajax.php
, 文件名中的”admin”可能会引起困惑, 但是不管是前台的还是后台的Ajax请求都是在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;
}