Das Hinzufügen der callbackfunktion für wp_ajax_ hat keine Auswirkungen

Ich habe versucht, der WordPress AJAX Aktion woocommerce_apply_coupon eine Callback function woocommerce_apply_coupon .

Diese Aktion ist im WooCommerce-Plugin definiert. Ich möchte meiner Aktion eine eigene Callback-function aus meiner Plugin-Datei hinzufügen.

Was ich versucht habe:

 add_action( 'wp_ajax_nopriv_woocommerce_apply_coupon','darn',999); add_action( 'wp_ajax_woocommerce_apply_coupon', 'darn',999); function darn(){ print_r($_REQUEST); exit; } 

Wenn ich dies in meiner functions.php mache, wird nicht einmal ein Fehler angezeigt, da ich keinen Effekt dieses Codes sehen kann.

Ich möchte wissen, ob das überhaupt möglich ist. Vielen Dank.

Solutions Collecting From Web of "Das Hinzufügen der callbackfunktion für wp_ajax_ hat keine Auswirkungen"

Ja. Es ist möglich und du bist auf dem richtigen Weg! 🙂

AJAX-Aufrufe passieren “hinter den Kulissen” und es wird während des processes keine Bildschirmausgabe generiert, egal, was Sie zurückgeben oder print_r – deshalb sehen Sie nichts, was Ihnen zurückgegeben wird – stattdessen wird die Serverantwort von Javascript erfasst und dort ausgeführt.

Das gibt Ihnen zwei grundlegende Optionen zum Debuggen Ihrer AJAX-Aktionen:

1) Sie können error_log() in Ihren AJAX-Aktionen verwenden, um die Ausgabe in die WP_DEBUG_LOG Datei zu schreiben und die Ergebnisse dort zu überprüfen:

 function darn(){ error_log( print_r($_POST, 1) ); exit; } 

Weitere Informationen finden Sie unter Codex: Debugging_in_WordPress – WP_DEBUG_LOG

Pro-Tipp # 1: tail -f debug.log eine Terminal-Konsole und verwenden Sie den tail -f debug.log für einen Live-Stream zum Debuggen von Awesomness;)

Pro-Tipp 2: Verwenden Sie tail -f debug.log | grep -v 'bad-plugin' tail -f debug.log | grep -v 'bad-plugin' , um zu viel Debugging-Awesomeness von Plugin-Autoren WP_DEBUG_LOG , die WP_DEBUG_LOG nicht verwenden ;

2) Verwenden Sie javascript eigene console.log() , um die Antwort direkt in Ihrem Browser zu überprüfen:

Sende eine Antwort von der AJAX-Aktion …

 function darn(){ echo 'darn!' exit; } 

… und empfange es mit JS:

 $.post(ajaxurl, data, function(response) { // Response will be 'darn!' if( typeof(console) == 'object' ) console.log( response ); }); 

Pro-Tipp Nr. 3: Anstatt die Antwort einfach wie oben zu wiederholen, können Sie wp_send_json () verwenden, um eine JSON-formatierte Antwort oder WP_Ajax_Response- class für ein XML zu generieren . Praktisch für komplexere Antworten und / oder Fehlerbehandlung!

Pro-Tipp # 4: Lassen Sie mich in Kommentaren wissen, wenn etwas unklar bleibt: D

Willkommen und viel Spaß auf WPSE!

Wenn ein anderer Handler-Code zuerst angehängt wird und er exit() aufruft, endet das Skript, so dass Ihr Code niemals ausgeführt wird.

Überprüfen Sie den anderen Handler.