Der Ajax-Aufruf gibt 0 zurück, wenn sich add_action innerhalb einer class in functions.php befindet

Ajax-Aufruf gibt 0 als Ausgabe zurück. Ich bin mir sicher, dass der Haken nicht funktioniert und es nicht die test2 Methode test2 . Warum add_action(... nicht innerhalb der class in functions.php ?

——– Wrap innerhalb von functions.php Startet ——-

 class test{ public function __construct() { add_action( 'wp_ajax_test2', array( $this, 'test2' ) ); } public function test1() { ?>  jQuery(document).ready(function($){ var ajaxurl = "/wp-admin/admin-ajax.php"; var data = {'action':'test2'}; $.ajax({ url: ajaxurl, type: "POST", data: data, success: function(val) { alert(val); }, }); }); <?php } public function test2(){ echo "success"; exit; } } 

——– Wrap innerhalb von functions.php endet ——-

Erstellt ein Objekt in einer Vorlagenseite und ruft die Methode test1 auf:

 $ob_call = new test; $ob_call->test1(); 

Solutions Collecting From Web of "Der Ajax-Aufruf gibt 0 zurück, wenn sich add_action innerhalb einer class in functions.php befindet"

Obwohl ich nicht sicher bin, warum Sie es so machen wollen, finden Sie unten den Arbeitscode. Bitte beachten Sie die Kommentare in der Zeile. Ich hoffe das hilft.

 class test{ public function __construct() { add_action( 'wp_ajax_test2', array( $this, 'test2' ) ); /* Front end ajax needs this. */ add_action( 'wp_ajax_nopriv_test2', array( $this, 'test2' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'test1' ) ); } public function test1() { /* in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value */ wp_localize_script('test-script-ajax', 'ajaxobj', array('ajaxurl' => admin_url('admin-ajax.php'))); /* Moved your js to a separate js file and enquing it the WordPress way */ wp_enqueue_script( 'test-script-ajax', get_stylesheet_directory_uri() . '/js/test-ajax.js', array( 'jquery' )); } public function test2(){ echo "success"; exit; } } $ob_call = new test; $ob_call->test1(); 

Hier ist der Code in der Datei test-ajax.js

 jQuery(document).ready(function($){ var data = { 'action':'test2' }; jQuery.post( ajaxobj.ajaxurl, data, function( response ) { alert(response); }); }); 

Es funktioniert jetzt

———- function.php —————

add_action (‘wp_ajax_test2’, Array (‘test’, ‘test2’));

classnprüfung {

 public function __construct() { } public function test1() { ?> < ?php } public function test2(){ echo "success"; exit; } 

}


------------------ Seite ( Vorlage ) -------------

$ ob_call = neuer Test;

$ ob_call-> test1 ();

Sehen Sie sich https://wordpress.stackexchange.com/questions/203383/why-hooking-differs-in-plugin-and-function-php-wordpress an