Wordpress admin-ajax приводит к переадресации ошибки 302

Я настроил плагин для выполнения некоторых вызовов 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'));
        }
    }
}
12
задан Community 23 May 2017 в 12:10
поделиться