Gần đây tôi đã làm việc trên ajax. Các hướng dẫn bạn tìm thấy trên mạng đều rất giống nhau và khá dễ thực hiện. Nhưng tôi luôn nhận được một yêu cầu xấu 400 trong ajax-admin.php
hồ sơ của mình .
Sau một thời gian dài tìm kiếm và chuyên sâu, tôi đã phát hiện ra rằng đó là do thời gian tích hợp.
Nếu tôi sử dụng init
hook hành động để khởi tạo script và wp_localize_script
mọi thứ sẽ hoạt động tốt. Vì vậy, mã phải chính xác.
my-page-test-tests.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();
}
Nhưng nếu tôi sử dụng ví dụ wp_enqeue_scripts
hook hành động, tôi luôn nhận được yêu cầu xấu.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
Vấn đề với điều này là:
Tôi muốn có các chức năng trong một tệp php bổ sung và chỉ tải chúng nếu chúng cần thiết trên một trang cụ thể. Đối với điều này tôi cần, ví dụ is_page()
. Nhưng is_page()
hoạt động sớm nhất khi tôi móc hàm với hàm bao gồm vào parse_query
móc hành động:
Hàm.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');
Vì vậy, các chức năng được nối để init
hook trong my-page-test-functions.php
tập tin không được kích hoạt, tôi cho rằng, bởi vì init
đến trước parse_query
.
Có một thực tiễn tốt nhất để tổ chức này, vì vậy nó hoạt động? Hoặc làm thế nào tôi có thể sửa admin-ajax.php
yêu cầu xấu khi sử dụng wp_enqeue_scripts
hook hành động?