Der beste Ort, um die wp_ajax_the_ajax_hook Aktion im Plugin zu laden

Ich baue ein Shortcode-Plugin und möchte nicht unnötigen Code laden, es sei denn, der Shorcode wird auf einer Seite aufgerufen.

Ich habe Probleme mit den Ajax-functionen. Es scheint, dass ich alles sehr früh im Plugin-Code laden muss, wodurch unnötiger Code für die gesamte Site geladen wird.

Ich spreche über die üblichen Anrufe beim Hinzufügen von Ajax

 add_action ('wp_ajax_the_ajax_hook', 'testFunction');
 add_action ('wp_ajax_nopriv_the_ajax_hook', 'testFunction'); 

und auch die Backend-function muss geladen werden.

  function testFunction () {
         // mach etwas Serverseite mit $ POST
         Echo 'das ist eine Testfunktion';
         sterben();
      } 

Wenn ich die add_actions nicht bei meinem Plugin “top” code lade bekomme ich die ajax.js nicht geladen Wenn ich die testFunction nicht bei meinem plugin “top” code lade bekomme ich eine call_user_func_array () erwartet Parameter 1 an ein gültiger Callback sein, function ‘testFunction’ nicht gefunden oder ungültiger functionsname

Ich habe kein Problem, die Skripte “on demand” zu laden, wenn der Shortcode aufgerufen wird, also:

 wp_enqueue_script ('mein-ajax-handle', FAU_PLUGIN_URL. 'js / ajax.js', Array ('jquery'));
 wp_localize_script ('mein-ajax-handle', 'the_ajax_script', array ('ajaxurl' => admin_url ('admin-ajax.php')));

Hoffe, jemand hat dieses Problem auch … Vielen Dank im Voraus

Solutions Collecting From Web of "Der beste Ort, um die wp_ajax_the_ajax_hook Aktion im Plugin zu laden"

Ich weiß nicht, ob es der “beste” Ort ist, aber get_header ist früh genug, um Skripte noch einzubinden:

 function at_set_header () { global $post, $has_the shortcode; if ( is_object( $post ) && has_shortcode( $post->post_content, 'shortcode_name') ) { $has_the_shortcode = true; wp_enqueue_script( 'my-ajax-handle', FAU_PLUGIN_URL . 'js/ajax.js', array( 'jquery' ) ); wp_localize_script( 'my-ajax-handle', 'the_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } } add_action( 'get_header', 'at_set_header'); 

Der $has_the_shortcode global kann nützlich sein, um zu einem späteren $has_the_shortcode über andere Ressourcen zu entscheiden.