AJAX – SHORTINIT auf TRUE gesetzt ist leer

Ich dachte, ich würde diesen raffinierten Kurzspieltrick für eine Drehung nehmen. Wenn ich dies jedoch in meinen benutzerdefinierten ajax-Handler einbeziehe, erhalte ich von meinem callback keine Antwort. Wenn ich es kommentiere, funktioniert es gut. Alles verändert?

<?php //mimic the actual admin-ajax define('DOING_AJAX', true); if (!isset( $_POST['action'])) die('-1'); ini_set('html_errors', 0); define('SHORTINIT', true); require_once('wp/wp-load.php'); //Typical headers header('Content-Type: text/html'); send_nosniff_header(); //Disable caching header('Cache-Control: no-cache'); header('Pragma: no-cache'); $action = esc_attr(trim($_POST['action'])); $allowed_actions = array( 'posts', 'status', ); if(in_array($action, $allowed_actions)){ if(is_user_logged_in()) do_action('handle_tumblr_'.$action); else do_action('handle_tumblr_nopriv_'.$action); } else{ die('-1'); } 

 function tumblr_status() { echo 'whos there?'; exit; } add_action('handle_tumblr_status','tumblr_status'); add_action('handle_tumblr_nopriv_status','tumblr_status'); function tumblr_posts() { echo 'k'; exit; } add_action('handle_tumblr_posts','tumblr_posts'); add_action('handle_tumblr_nopriv_posts','tumblr_posts'); 

Solutions Collecting From Web of "AJAX – SHORTINIT auf TRUE gesetzt ist leer"

Sie verwenden esc_attr() , das nicht verfügbar ist, wenn Sie define( 'SHORTINIT', true ); , siehe Quelle . Sie müssen also entweder die define( 'SHORTINIT', true ); manuell laden oder das define( 'SHORTINIT', true ); – eigentlich mag das Beispiel in dem Thread, auf den du dich beziehst.


Wie im Kommentar gesagt, habe ich mental nach der ersten function do_action , die nicht funktionieren kann, aber du hast recht mit do_action – kann dir aber genau nicht sagen, was du dafür brauchst. Wie auch immer, Sie sollten SHORTINIT wahrscheinlich nicht verwenden und keine Probleme haben. Nur um so viel zu notieren, persönlich mache ich einfach meine AJAX-Aufgaben auf dem WordPress-Weg .