如果有人后来偶然发现这一点——在我的情况下,这是因为我有一个admin_init
挂钩,防止进入wp-admin
对于某个角色(这就是为什么我们通常有一个前端ACF表单,对吗?)并且在尝试运行时会产生错误admin-ajax.php
. ACF使用该文件进行AJAX验证,因此当您运行某种;“防止wp管理”;钩子,这也会停止ACF验证。
因此,钩子干扰是:
add_action( \'admin_init\', \'custom_no_admin_access\', 100 );
function custom_no_admin_access() {
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if($user_role === \'special-role\'){
exit( wp_redirect(home_url()));
}
}
我把它变成:
add_action( \'admin_init\', \'custom_no_admin_access\', 100 );
function custom_no_admin_access() {
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if($user_role === \'special-role\' && $_SERVER[\'PHP_SELF\'] != \'/wp-admin/admin-ajax.php\'){
exit( wp_redirect(home_url()));
}
}
故障排除的一大帮助是使用Chrome的Inspector跟踪网络请求。转到网络选项卡并选中;保留日志“;因此,您可以查看请求的历史记录。尝试提交表单,我可以看到它正在重定向到主页(我的
admin_init
hook在尝试使用admin ajax时说要这样做。验证失败之前。
希望有帮助!