Wie bekomme ich Ajax in ein Thema – ohne ein Plugin zu schreiben?

Okay, ich beginne mit einigen AJAX-Sachen in einem WordPress-Theme

1) Ich baue ein Kind-Thema aus dem thematischen Rahmen 2) Mein Kind Thema hat eine header.php, index.php, functions.php und style.css (in diesem Stadium)

In meiner header.php habe ich folgendes (übrigens: der Code wurde von http://codex.wordpress.org/AJAX_in_Plugins angepasst):

  jQuery(document).ready(function($) { var data = { action: 'my_special_action', whatever: 1234 }; jQuery.post('', data, function(response) { jQuery('#output').html('Got this from the server: ' + response); }); });   

Richtig, das ist alles cool – und es aktualisiert das OUTPUT Div auf der Seite mit “Got that from the server: 0”

Ich brauche eine PHP-function namens “my_action_callback” – also in der functions.php meines Themas habe ich folgendes:

 function my_action_callback() { $whatever = $_POST['whatever']; $whatever += 10; echo 'whatever now equals: ' . $whatever; die(); } 

Dies ist die einzige function in meiner functions.php

Um sicherzustellen, dass die PHP-function funktioniert, halte ich my_action_callback () in meine index.php – und es gibt “was auch immer jetzt gleich: 10” aus wie erwartet.

Wie auch immer – die AJAX-Antwort ist immer “Habe das vom Server: 0” Ajax scheint nie die Antwort von der PHP-function zu bekommen.

Ich habe versucht, .ajaxError () hinzuzufügen, um zu sehen, ob es irgendwelche Fehler gab – nein.

Ich habe versucht, die PHP-functionen zu einem anderen Plugin von mir hinzuzufügen – nein.

Was fehlt mir, dass jQuery nicht das Ajax-Bit für mich tut?

Danke im Voraus

Solutions Collecting From Web of "Wie bekomme ich Ajax in ein Thema – ohne ein Plugin zu schreiben?"

Setzen Sie diese add_action functionen auch in Ihre functions.php Datei. Wenn sie in der header.php , registriert WordPress sie nie, da die Kopfzeile nicht in AJAX geladen ist. Außerdem benötigen Sie die Überprüfung von is_admin() . Der Header des Themas wird niemals in admin geladen. Ihre functionsdatei sollte also so aussehen:

 add_action('wp_ajax_my_special_action', 'my_action_callback'); add_action('wp_ajax_nopriv_my_special_action', 'my_action_callback'); function my_action_callback() { $whatever = $_POST['whatever']; $whatever += 10; echo 'whatever now equals: ' . $whatever; die(); } 

Und der Anfang dieses Teils der Header-Datei Ihres Themes sollte folgendermaßen aussehen:

 < ?php $_ajax = admin_url('admin-ajax.php'); ?>  

Ansonsten sieht dein Code so aus, als wäre es gut zu gehen!