Ho lavorato su Ajax ultimamente. I tutorial che trovi in rete sono tutti molto simili e abbastanza facili da implementare. Ma ricevo sempre una cattiva richiesta 400 sul mio ajax-admin.php
file.
Dopo una lunga e intensa ricerca, ora ho scoperto che è a causa del tempo di integrazione.
Se uso il init
gancio di azione per inizializzare lo script e wp_localize_script
, tutto funziona bene. Quindi il codice stesso deve essere corretto.
my-page-test-functions.php
function ajax_login_init(){
wp_register_script('ajax-login-script',get_stylesheet_directory_uri().'/js/ajax-login-script.js',array('jquery'));
wp_enqueue_script('ajax-login-script');
wp_localize_script('ajax-login-script','ajax_login_object',array('ajaxurl' => admin_url('admin-ajax.php'),'redirecturl' => 'REDIRECT_URL_HERE','loadingmessage' => __('Sending user info, please wait...')));
add_action('wp_ajax_nopriv_ajaxlogin','ajax_login');
}
if(!is_user_logged_in()){
add_action('init','ajax_login_init');
}
function ajax_login(){
//nonce-field is created on page
check_ajax_referer('ajax-login-nonce','security');
//CODE
die();
}
Ma se uso ad es. Il wp_enqeue_scripts
gancio di azione ricevo sempre la cattiva richiesta.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
Il problema con questo è:
Vorrei avere le funzioni in un file php aggiuntivo e caricarle solo se sono necessarie in una determinata pagina. Per questo ho bisogno, per esempio is_page()
. Ma is_page()
funziona al più presto quando aggancio la funzione con l'inclusione nel parse_query
gancio di azione:
functions.php
function sw18_page_specific_functions(){
if(is_page('page-test')){
include_once dirname(__FILE__).'/includes/my-page-test-functions.php';
}
}
add_action('parse_query','sw18_page_specific_functions');
Quindi , suppongo, quindi le funzioni agganciate per init
agganciare il my-page-test-functions.php
file non si attivano, perché init
arrivano prima parse_query
.
Esistono le migliori pratiche per organizzarlo, quindi funziona? O come posso risolvere la admin-ajax.php
cattiva richiesta quando uso il wp_enqeue_scripts
gancio di azione?