Mam dostosowaną wtyczkę do wykonania niektórych wywołań ajaxów do admina-ajax.php i działa świetnie. I skopiowany kod do innego miejsca i już nie działa dla użytkowników, którzy nie są zalogowaniWordpress admin-ajax skutkuje błędem 302 przekierowaniem
Od Firebug.
POST http://<subdomain>.<server>/wp-admin/admin-ajax.php 302 Moved Temporarily 1.08s
GET http://<subdomain>.<server>/ 200 OK
edycji: Chodzi o to, co mogłoby tematem ewentualnie zrobić, aby przekierować żądania ajax. Wtyczka ma dwa haki:
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
Oboje działają dobrze na większości stron, ale jeden motyw przekierowuje żądania od non zalogowanych użytkowników jakoś. Ponieważ te działania są specyficzne dla wtyczki, nie mam pojęcia, od czego zacząć.
ROZWIĄZANIE: Wielkie dzięki Ronald Huereca dla roztworu add_action('init'
, to jest dokładnie to, gdzie przekierowanie wykraczająca został podpinania się, próbując chronić obszar administracyjny. Teraz potrzebuję znaleźć bezpieczną poprawkę, która nie narusza obszaru administratora tematu, ale także nie ściska innych wtyczek od zezwalania użytkownikom na tworzenie anonimowych zapytań ajaxowych.
// 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'));
}
}
}
Pytanie nie mówi nic na temat problemu. Opracować. – ThinkingMonkey
Niestety, problemem jest to, że nie mam pojęcia, co może przekierować żądania ajax do admin-ajax.php Działania są moje, działają dobrze, więc gdzie można "wejść w drogę", aby spowodować przekierowanie. – Sinetheta
Proszę zignorować (usuń komentarz nie działa; ( –