Я настроил плагин для некоторых вызовов ajax в admin-ajax.php, и он прекрасно работает.Я скопировал код на другой сайт, и он больше не работает для пользователей, которые не вошли в систему.
Из firebug:
POST http://<subdomain>.<server>/wp-admin/admin-ajax.php 302 Moved Temporarily 1.08s
GET http://<subdomain>.<server>/ 200 OK
edit : Вопросчто может сделать тема для перенаправления запросов ajax.Плагин имеет две ловушки:
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
Они прекрасно работают на большинстве сайтов, но одна тема перенаправляет запросы от не авторизованных пользователей.Поскольку эти действия специфичны для плагина, я не знаю, с чего начать.
РЕШЕНИЕ: Большое спасибо Рональду Хуереке за add_action( 'init'
решение, это именно то, где перенаправляющий нарушитель был подключен в попытке защитить область администратора.Теперь мне просто нужно найти безопасное исправление, которое не нарушает область администрирования темы, но также не мешает другим плагинам разрешать пользователям делать анонимные запросы 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'));
}
}
}