用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; }