Wie deklarieren Ajax functionen ussing SHORTINIT

Ich versuche, SHORTINIT in meiner WordPress zu verwenden, um Ajax schneller zu machen, aber ich versuche meine functionen zu deklarieren und gebe keinen Wert zurück.

Mein Code ist:

define('SHORTINIT',true); require_once ('../../../../wp-load.php'); require_once ('../../../../wp-config.php'); function muestraMensaje_callback(){ echo "hola que tal"; die(); } add_action('wp_ajax_muestraMensaje', 'muestraMensaje_callback'); add_action('wp_ajax_nopriv_muestraMensaje', 'muestraMensaje_callback'); 

Und in meinen functionen habe ich diesen Code:

 /* * Ajaxs function */ add_action('init','registraAjax'); function registraAjax(){ wp_register_script('miScript', get_bloginfo('stylesheet_directory').'/js/ajax.js'); //$miUrl=array('url'=>admin_url('admin-ajax.php')); $miUrl=array('url'=>get_bloginfo('stylesheet_directory').'/myAjax/ajax.php'); wp_localize_script(miScript, 'MyAjax', $miUrl); wp_enqueue_script('miScript',get_bloginfo('stylessheet_directory').'/js/ajax.js'); } 

Was kann das Problem sein? Wenn ich zu meinem “muestraMensaje” anrief, hatte ich keinen Wert.

Bearbeiten:

Jetzt habe ich ein neues Problem: Gib mir den Fehler:

 Fatal error: Call to a member function main() on a non-object...line 873 

Ich suche nach der Lösung, aber jeder sagte, dass dieser Fehler nicht wp-load.php enthalten ist, aber ich habe diese Datei aufgenommen ….

Solutions Collecting From Web of "Wie deklarieren Ajax functionen ussing SHORTINIT"

Erstellen Sie das PHP-Skript, das die Ajax-Anfrage bearbeiten wird, und senden Sie die Ajax-Anfrage direkt an dieses Filet (nicht an wp-admin / admin-ajax.php). Definieren SHORTINIT in dieser Datei zuerst SHORTINIT , laden SHORTINIT dann WordPress manuell und bearbeiten Sie schließlich die Ajax-Anfrage.

 define('SHORTINIT',true); //IMPORTANT: Change with the correct path to wp-load.php in your installation require_once ('../../../../wp-load.php'); //Load any WordPress module you may need from the include folder //For exmaple: //require( ABSPATH . WPINC . '/meta.php' ); //require( ABSPATH . WPINC . '/post.php' ); muestraMensaje(); function muestraMensaje(){ echo "hola que tal"; die(); } 

Angenommen, Sie haben die Datei ajax.php benannt und sie befindet sich in der URL mysite.com/wp-content/plugins/a-plugin/ajax.php. Das, das Javascript sollte etwas wie sein:

 $.ajax({ url: "http://mysite.com/wp-content/plugins/a-plugin/ajax.php", }) .done(function( data ) { alert(data); }); 

Im nächsten Beispiel verwende ich diese WordPress-functionen: upadate_post_meta , get_post_custom , wp_send_json_success und wp_send_json_error . Diese Module werden benötigt:

  • load.php: immer benötigt, um WordPress zu laden
  • upadate_post_meta : Es enthält Desinfektionsfunktionen, die von upadate_post_meta verwendet werden
  • meta.php: Es enthält functionen, die mit Post-Metadaten und benutzerdefinierten Feldern zusammenhängen
  • post.php und revision.php: Diese Module enthalten postbezogene functionen, die beim Aktualisieren von Post-Daten benötigt werden.

Also, das ist das PHP-Skript:

 define('SHORTINIT', true); //IMPORTANT: Change with the correct path to wp-load.php in your installation require( '../../../wp-load.php' ); require( ABSPATH . WPINC . '/formatting.php' ); require( ABSPATH . WPINC . '/meta.php' ); require( ABSPATH . WPINC . '/post.php' ); require( ABSPATH . WPINC . '/revision.php' ); cyb_uptdate_hits(); function cyb_uptdate_hits(){ if( isset($_GET['postID']) ) { $post_id = intval( $_GET['postID']); if( $post_id > 0 ) { $get_meta = get_post_custom($post_id); if( isset($get_meta['hits'][0]) ) { $prev = intval($get_meta['hits'][0]); } else { $prev = 0; } update_post_meta($post_id, 'hits', $prev + 1); $res = array('postID' => $post_id, 'hits' => $prev + 1); wp_send_json_success($res); } else { wp_send_json_error('No post to update.'); } } else { wp_send_json_error('No post to update.'); } die('You die!'); } 

Dies ist das Javascript, das ich verwende:

 (function($){ $(document).ready(function(){ //Update post hits counter if( typeof cyb_hits_data.postID !== 'undefined' && cyb_hits_data.postID != "0") { var update_hits = function(post_id){ $.getJSON(cyb_hits_data.ajax_url,{ postID : post_id }); } update_hits(cyb_hits_data.postID); } }); })(jQuery); 

Und die Enqueue Javascript:

 add_action( 'wp_enqueue_scripts', 'cyb_hits_enqueue_scripts' ); function cyb_hits_enqueue_scripts() { wp_register_script('cyb-hits', plugins_url( '/js/hits.js', __FILE__ ), array( 'jquery' ) ); wp_enqueue_script('jquery'); wp_enqueue_script('cyb-hits'); $theID = 0; if(is_single()) { $theID = get_the_ID(); } $scriptData = array( 'ajax_url' => plugins_url( '/ajax_hits.php', __FILE__ ), 'postID' => $theID ); wp_localize_script('cyb-hits','cyb_hits_data',$scriptData); }