वहाँ थोड़ा है कि आप Silex सर्वर के साथ कर सकते हैं जो Wordpress के माध्यम से नहीं किया जा सकता है, लेकिन यह AJAX कॉल का जवाब देने के लिए WP प्राप्त करने के लिए थोड़ा प्रयास करता है।
पहला कदम AJAX के माध्यम से कॉल उपलब्ध कराना है। इसके लिए अपने कार्यों के लिए एक पंक्ति जोड़ने की आवश्यकता है
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
अगर यह कॉल मेहमानों और ग्राहकों (अर्थात ADMIN) के लिए किया जाएगा, तो आपको लाइन की भी आवश्यकता होगी।
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
जो एक ही काम करता है लेकिन अधिक समावेशी है।
अगला कदम अजाक्स कॉल बनाना है। आप इस तरह के कॉल का उदाहरण नहीं देते हैं, इसलिए मैं आपको केवल $ wpdb के डॉक्स को देखने की सलाह दे सकता हूं । WP में डेटाबेस से जानकारी प्राप्त करने और जटिल प्रश्नों के लिए कॉल का एक व्यापक सेट है, आप हमेशा $ wpdb-> क्वेरी () का उपयोग कर सकते हैं जो आपके लिए मनमाना SQL चलाएगा।
AJAX तर्क my_ajax_call () फ़ंक्शन में जाता है और परिणाम को एक सरणी या ऑब्जेक्ट में रखा जाना चाहिए। आपके फ़ंक्शन की अंतिम पंक्ति wp_send_json_success ($ वापसी) पर कॉल होनी चाहिए जहां $ वापसी वस्तु / जानकारी की सरणी लौटाया जाना है।
इस प्रणाली का उपयोग करते हुए, मैं wp_admin सेक्शन में पृष्ठों को जोड़ने में सक्षम हूं ताकि शॉप मालिकों को WooCommerce डेटा से पुन: स्थापना के लिए ऑर्डर करने की अनुमति दी जा सके और विविधताओं के लिए एक साइड-लोड गैलरी (वू केवल माता-पिता के लिए एक गैलरी की अनुमति देता है)।
यहाँ एक त्वरित उदाहरण है:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
और फिर जावास्क्रिप्ट में, अधिक कदम आवश्यक हैं। एक बात के लिए, आपको WP AJAX URL की आवश्यकता होगी जो आमतौर /wp-admin/admin-ajax.php
पर होता है लेकिन कुछ हद तक भिन्न हो सकता है। इसे अक्सर वैश्विक अजाक्सुरल के रूप में जावास्क्रिप्ट के लिए उपलब्ध कराया जाता है या किसी अन्य वस्तु की तरह टक किया जा सकता है woocommerce.ajaxurl
। आपको एक एक्शन तत्व के साथ जावास्क्रिप्ट ऑब्जेक्ट का निर्माण करने की आवश्यकता होगी जो आपके फ़ंक्शन को इंगित करता है और किसी भी अन्य चर को आपको AJAX कॉल करने के लिए पास करने की आवश्यकता हो सकती है। उदाहरण के लिए:
data = {'action':'my_ajax_call'}
या
data = {'action':'my_ajax_call', 'todo':'getDate'}
(function($){
$.ajax{
url:ajaxurl,
data: data,
success: function(trn) {$('#data').html(trn.data)}
})(jQuery)
HTH