作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的ajax无法在前端工作,因此wp_ajax_nopriv
无法工作,当用户登录时,ajax工作正常,但是当存在相反的情况时,例如用户/管理员注销后,页面正在重定向到主主页,并且 ajax 不适用于未登录的用户。如何解决我的问题,并为这两种情况访问相同的 ajax。我目前使用的是 wordpress 4.0
。有没有可能的方法来限制ajax适用于所有场景?
我的代码:
add_action( 'wp_ajax_Test_SO', 'Test_SO' );
add_action( 'wp_ajax_nopriv_Test_SO', 'Test_SO' );
function Test_SO()
{
$a = array('1','2','3');
wp_send_json_success( $a );
}
最佳答案
如果它重定向到您的主页,则听起来像是使用了过滤器来阻止非管理员用户访问 wp-admin
区域。这样的事情很常见,通常在插件或 functions.php
文件中:
function filterNonAdmins() {
if (!current_user_can('manage_options')) {
wp_redirect(home_url());
exit;
}
}
add_action('admin_init', 'filterNonAdmins');
...但是这不好,因为它还会过滤 AJAX 调用。
您需要的是更类似于此的东西:
function filterNonAdmins() {
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
if (!current_user_can('manage_options')) {
wp_redirect(home_url());
exit;
}
}
}
add_action('admin_init', 'filterNonAdmins');
首先检查是否是 AJAX 调用;如果是,则用户/调用不会重定向。
关于php - wp_ajax_nopriv 不工作 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27846024/
我的ajax无法在前端工作,因此wp_ajax_nopriv无法工作,当用户登录时,ajax工作正常,但是当存在相反的情况时,例如用户/管理员注销后,页面正在重定向到主主页,并且 ajax 不适用于未
我是一名优秀的程序员,十分优秀!