मैं ajax पर हाल ही में काम कर रहा हूँ। नेट पर आपको जो ट्यूटोरियल मिलते हैं, वे सभी बहुत समान हैं और लागू करने में काफी आसान हैं। लेकिन मुझे हमेशा अपनी फ़ाइल पर 400 का खराब अनुरोध मिलता है ajax-admin.php।
एक लंबी और गहन खोज के बाद, मुझे अब पता चला है कि एकीकरण के समय के कारण।
यदि मैं initस्क्रिप्ट को आरंभ करने के लिए एक्शन हुक का उपयोग करता हूं और wp_localize_script, सब कुछ ठीक काम करता है। तो कोड ही सही होना चाहिए।
मेरे पृष्ठ के परीक्षण-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()जल्द से जल्द काम करता है जब मैं समारोह को 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?
