2013-03-29 13 views
5

Używanie ajax i wordpress (starając się zrobić to poprawnie). Jest to dla mnie raczej nowe, ale już wcześniej pracowałem z większą frajdą. Pozornie - losowo zaczęły pojawiać się problemy, więc złamałem kod na najbardziej podstawowym poziomie i nie mogę nawet sprawić, żeby to zadziałało !!! Czuję, że jestem po prostu sfrustrowany i to zmusza mnie do pominięcia prostego błędu. Czy coś jest z tym nie tak?Wiadomość powodzenia Ajax zwraca HTML mojej strony głównej.

Moje jQuery:

$.post(
    ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php 
    {action: "post-save"}, 
    function(response){ 
     alert(response); 
    } 
); 

Moje PHP:

function update_post(){ 
    echo json_encode(array("success" => "all systems go"), JSON_FORCE_OBJECT); 
    exit; 
} 
add_action('wp_ajax_post-save', 'update_post'); 

Efektem końcowym jest prace alert, czyli $ .post jest skuteczne (? Prawo), ale zwrócona jest zmienna response źródła HTML mojej stronie ...

Odpowiedz

3

I zdobione ...

Może to pomóc nowicjuszom takim jak ja, którzy popełniają ten sam błąd, więc odpowiem na własne pytanie :)

Okazuje się, że nie jestem zalogowany, idź. Odpowiedź była dziwna i pomogła mnie wyrzucić, zwracając całą stronę główną. Powodem tego jest miałem zablokowane Moje funkcje plików, który zawiera responder Ajax tak:

function block_users() 
{ 
    if(!current_user_can('delete_pages')) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 

Powinienem wiedzieć, aby zalogować się (że byłem), ale takie nieoczekiwane rezultaty i to był piątek :)

Uwaga dla każdego, kto natknie się na to: jeśli chcesz, aby ktoś robił ajax bez zalogowania, użyj bez_poprawnej wersji wp_ajax, wp_ajax_nopriv.

add_action('wp_ajax_nopriv_action', 'function'); 

Zamiast

add_action('wp_ajax_action', 'function'); 

byłej nie wymaga pozwolenia, czyli jest zalogowany, aby zrobić ajax żądania.

+0

Tak mam ten sam problem, mam skomentował te linie. to jest teraz ok, ale jak mogę przekierować użytkowników na stronę główną? moja funkcja to funkcja themeblvd_redirect_admin() { if (! current_user_can ('edit_posts')) { wp_redirect (site_url()); exit; } } add_action ('admin_init', 'themeblvd_redirect_admin'); – Naveenbos

2

miałem ten sam problem, a rozwiązanie było dodać DOING_AJAX do funkcji

function block_users() 
{ 
    if(!current_user_can('delete_pages') && (! defined('DOING_AJAX') || ! DOING_AJAX)) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 
Powiązane problemy