Tôi đã tùy chỉnh một plugin để thực hiện một số cuộc gọi ajax tới admin-ajax.php và nó hoạt động tốt. Tôi sao chép mã trên một trang web khác và nó không còn hoạt động cho những người dùng chưa đăng nhậpKết quả admin-ajax của Wordpress trong Lỗi 302 chuyển hướng
Từ firebug:.
POST http://<subdomain>.<server>/wp-admin/admin-ajax.php 302 Moved Temporarily 1.08s
GET http://<subdomain>.<server>/ 200 OK
chỉnh sửa: Câu hỏi đặt ra là những gì có thể một chủ đề có thể làm gì để chuyển hướng yêu cầu ajax. Plugin có hai móc:
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
Cả hai đều hoạt động tốt trên hầu hết các trang web, nhưng một chủ đề chuyển hướng yêu cầu từ người dùng không đăng nhập bằng cách nào đó. Vì những hành động này cụ thể đối với các plugin, tôi đang thua lỗ khi bắt đầu tìm kiếm ở đâu.
SOLUTION: Big nhờ Ronald Huereca cho các giải pháp add_action('init'
, đó là chính xác nơi chuyển hướng vi phạm đã được nối vào, trong một nỗ lực để bảo vệ khu vực admin. Bây giờ tôi chỉ cần tìm một sửa chữa an toàn ở đây mà không thỏa hiệp khu vực quản trị của chủ đề, nhưng cũng không bị ràng buộc các plugin khác từ cho phép người dùng thực hiện yêu cầu ajax ẩn danh.
// 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'));
}
}
}
Câu hỏi không nói bất cứ điều gì về sự cố. Kỹ lưỡng. – ThinkingMonkey
Xin lỗi, sự cố chỉ là tôi không biết có thể chuyển hướng yêu cầu ajax tới admin-ajax.php Các hành động là của riêng tôi, họ làm việc tốt, vì vậy, nơi có thể một "nhận được trong cách" để gây ra chuyển hướng đó. – Sinetheta
Hãy bỏ qua (xóa bình luận không làm việc; ( –