Son zamanlarda ajax üzerinde çalışıyorum. İnternette bulduğunuz öğreticilerin hepsi çok benzer ve uygulaması oldukça kolaydır. Ama her zaman dosyamda kötü bir istek 400 alıyorum ajax-admin.php
.
Uzun ve yoğun bir araştırmadan sonra, bunun entegrasyon zamanı yüzünden olduğunu öğrendim.
Ben init
komut dosyası başlatmak için eylem kanca kullanırsanız, ve wp_localize_script
her şey iyi çalışıyor. Bu yüzden kodun kendisi doğru olmalıdır.
benim sayfalık 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();
}
Ama örneğin wp_enqeue_scripts
eylem kanca kullanırsanız her zaman kötü istek alırım.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
Bununla ilgili sorun:
Ekstra bir php dosyasında fonksiyonları var ve sadece belirli bir sayfada gerekli ise onları yüklemek istiyorum. Bunun için mesela ihtiyacım var is_page()
. Ama is_page()
ben parse_query
eylem kanca içine fonksiyonu ile kanca zaman en erken çalışır :
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');
O zaman dosyaya init
kanca çengel fonksiyonları my-page-test-functions.php
tetiklemez, sanırım, çünkü init
daha önce geliyor parse_query
.
Bunu organize etmek için en iyi uygulamalar var, bu yüzden işe yarıyor mu? Veya eylem kancasını admin-ajax.php
kullanırken kötü isteği nasıl düzeltebilirim wp_enqeue_scripts
?