나는 최근에 아약스 작업을 해왔다. 인터넷에서 찾은 자습서는 모두 매우 유사하고 구현하기가 쉽습니다. 그러나 나는 항상 내 파일 에 대한 잘못된 요청 400 을 얻습니다 ajax-admin.php
.
길고 집중적 인 검색을 한 결과 통합 시점 때문임을 알게되었습니다.
init
작업 후크를 사용하여 스크립트를 초기화 wp_localize_script
하면 모든 것이 정상적으로 작동합니다. 따라서 코드 자체가 정확해야합니다.
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();
}
그러나 예를 들어 wp_enqeue_scripts
액션 후크를 사용하면 항상 잘못된 요청이 발생합니다.
if(!is_user_logged_in()){
add_action('wp_enqueue_scripts','ajax_login_init');
}
이 문제는 다음과 같습니다.
여분의 PHP 파일에 함수를 갖고 특정 페이지에 필요한 경우에만로드하고 싶습니다. 이를 위해 예를 들어 필요합니다 is_page()
. 그러나 is_page()
include와 함께 함수를 parse_query
동작 후크에 연결 하면 가장 빨리 작동합니다 .
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');
그럼 기능을하는 중독 init
에 후크 my-page-test-functions.php
트리거하지 않기 때문에, 나는 가정, 파일 init
전에 온다 parse_query
.
이를 구성하는 모범 사례가 있습니까? 또는 작업 후크를 admin-ajax.php
사용할 때 잘못된 요청을 어떻게 해결할 수 wp_enqeue_scripts
있습니까?