如果你查看这个文件wp-admin/admin-ajax.php
其中wp_ajax_
调用操作时,您将发现admin_init
正在之前调用操作。
下面是如何根据用户是否为admin返回不同的json对象:
add_action( \'wp_ajax_testing\', \'my_ajax\' );
add_action( \'admin_init\', \'my_ajax_checker\', 10, 2);
function my_ajax_checker() {
if( defined(\'DOING_AJAX\') && DOING_AJAX && current_user_can(\'manage_options\') ) {
switch($_POST[\'action\']) {
case \'action1\':
case \'action2\':
case \'action3\':
echo json_encode(array(\'error\' => false));
die();
}
}
}
function my_ajax() {
echo json_encode(array(\'error\' => true));
die();
}
在本例中,它检查您的操作以查看调用了哪个Ajax操作如果您使用其中一个操作登录,它将始终返回此json响应
\'{error:false}\'
. 它会立即退出,my\\u ajax函数永远不会被调用。将响应替换为您需要的任何响应。
DOING_AJAX
当操作admin_init
正在使用,请确保在检查其值之前先检查其是否已定义。