Я працюю над ajax останнім часом. Підручники, які ви знайдете в мережі, дуже схожі і досить прості у виконанні. Але я завжди отримую поганий запит 400 у своєму ajax-admin.php
файлі.
Після тривалого та інтенсивного пошуку я тепер з’ясував, що це через час інтеграції.
Якщо я використовую init
гачок дій для ініціалізації сценарію, і wp_localize_script
все працює добре. Отже, сам код повинен бути правильним.
моя-сторінка-тест-функції.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();
}
Але якщо я використовую, наприклад, wp_enqeue_scripts
гачок дій, я завжди отримую поганий запит.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
Проблема в цьому полягає:
Я хотів би, щоб функції були у додатковому файлі php та завантажували їх, лише якщо вони потрібні на певній сторінці. Для цього мені потрібно, наприклад is_page()
. Але is_page()
працює якнайшвидше, коли я підключаю функцію із включенням у parse_query
гачок дій:
function.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');
Отже функції підключені до init
зачепити в my-page-test-functions.php
файлі не спрацьовує, я вважаю, тому що init
передує parse_query
.
Чи є найкраща практика для організації цього, щоб воно працювало? Або як я можу виправити admin-ajax.php
поганий запит під час використання wp_enqeue_scripts
гачка дій?