gpt4 book ai didi

ajax - WordPress admin-ajax 导致错误 302 重定向

转载 作者:行者123 更新时间:2023-12-01 19:35:58 27 4
gpt4 key购买 nike

我定制了一个插件来对 admin-ajax.php 进行一些 ajax 调用,效果很好。我将代码复制到另一个网站,它不再对未登录的用户起作用。

来自 Firebug :

POST http://<subdomain>.<server>/wp-admin/admin-ajax.php 302 Moved Temporarily 1.08s    

GET http://<subdomain>.<server>/ 200 OK

编辑:问题是主题可以做什么来重定向 ajax 请求。该插件有两个钩子(Hook):

add_action( 'wp_ajax_em_ajax_getEvents', 'em_ajax_getEvents' ); // ajax for logged in users
add_action( 'wp_ajax_nopriv_em_ajax_getEvents', 'em_ajax_getEvents' ); // ajax for not logged in users

它们在大多数网站上都能正常工作,但其中一个主题会以某种方式重定向来自未登录用户的请求。由于这些操作是特定于插件的,我不知道从哪里开始寻找。

解决方案:非常感谢 Ronald Huereca对于 add_action( 'init' 解决方案,这正是有问题的重定向 Hook 的地方,试图保护管理区域。现在我只需要在这里找到一个安全的修复程序,该修复程序不会不会损害主题的管理区域,但也不会阻止其他插件允许用户发出匿名 ajax 请求。

// stop users accessing the admin
add_action('init', array( $this, 'prevent_admin_access' ), 0);

function prevent_admin_access() {

if (strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') !== false) {
$current_user = wp_get_current_user();

if(!user_can($current_user->ID, 'administrator') && ( !user_can($current_user->ID, 'contributor') ) ){
wp_redirect(get_option('siteurl'));
}
}
}

最佳答案

我在主题中发生了类似的事情。原始编码器试图阻止非管理员用户查看/wp-admin/区域。

这是一个例子:

// Block Access to /wp-admin for non admins.
function custom_blockusers_init() {
if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'custom_blockusers_init' ); // Hook into 'init'

我会检查你的主题是否有与我相似的源代码。

找到代码后,只需添加一个额外的条件即可确保在定义了 DOING_AJAX 常量的情况下不会重定向用户。

关于ajax - WordPress admin-ajax 导致错误 302 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9408334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com