Ich habe in letzter Zeit an Ajax gearbeitet. Die Tutorials, die Sie im Internet finden, sind alle sehr ähnlich und recht einfach zu implementieren. Aber ich bekomme immer eine schlechte Anfrage 400 in meiner ajax-admin.phpAkte.
Nach langer und intensiver Suche habe ich nun herausgefunden, dass dies an der Zeit der Integration liegt.
Wenn ich den initAktions-Hook verwende, um das Skript und zu initialisieren wp_localize_script, funktioniert alles einwandfrei. Der Code selbst muss also korrekt sein.
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();
}
Aber wenn ich zB wp_enqeue_scriptsAction Hook benutze bekomme ich immer die schlechte Anfrage.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
Das Problem dabei ist:
Ich möchte die Funktionen in einer zusätzlichen PHP-Datei haben und sie nur laden, wenn sie auf einer bestimmten Seite benötigt werden. Dafür brauche ich zum Beispiel is_page(). Funktioniert aber is_page()frühestens, wenn ich die Funktion mit dem Include in den parse_queryAction-Hook einhänge:
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');
Also dann werden funktionen zum initeinhängen der my-page-test-functions.phpdatei nicht ausgelöst, nehme ich an, da initkommt das schon mal vor parse_query.
Gibt es Best Practices, um dies zu organisieren, damit es funktioniert? Oder wie kann ich die admin-ajax.phpfehlerhafte Anfrage bei Verwendung des wp_enqeue_scriptsAktions-Hooks beheben ?
