มีเพียงเล็กน้อยที่คุณสามารถทำได้กับเซิร์ฟเวอร์ Silex ที่ไม่สามารถทำได้ผ่าน Wordpress แต่ใช้ความพยายามเล็กน้อยในการรับ WP เพื่อตอบสนองต่อการโทร AJAX
ขั้นตอนแรกคือการโทรผ่าน AJAX สิ่งนี้ต้องการเพิ่มบรรทัดในไฟล์ functions.php ของคุณซึ่งคล้ายกับ
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
หากมีการโทรนี้สำหรับแขกและลูกค้า (เช่นไม่ใช่ ADMIN) คุณจะต้องมีสาย
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
ซึ่งทำสิ่งเดียวกัน แต่รวมมากกว่า
ขั้นตอนต่อไปคือการสร้างการโทร ajax คุณไม่ให้เป็นตัวอย่างของการเรียกร้องดังกล่าวดังนั้นทั้งหมดที่ฉันสามารถทำได้คือการให้คำแนะนำให้คุณดูที่เอกสารสำหรับ$ wpdb WP มีชุดการเรียกที่ครอบคลุมสำหรับการดึงข้อมูลจากฐานข้อมูลและสำหรับการสืบค้นที่ซับซ้อนคุณสามารถใช้ $ wpdb-> query () ซึ่งจะเรียกใช้ SQL โดยอำเภอใจสำหรับคุณเสมอ
ตรรกะ AJAX ไปในฟังก์ชั่น my_ajax_call () และผลควรวางลงในอาร์เรย์หรือวัตถุ บรรทัดสุดท้ายของฟังก์ชั่นของคุณควรเป็นการเรียกไปยัง wp_send_json_success ($ return) โดยที่ $ return เป็นออบเจ็กต์ / อาร์เรย์ของข้อมูลที่จะถูกส่งกลับ
เมื่อใช้ระบบนี้ฉันสามารถเพิ่มหน้าลงในส่วน wp_admin เพื่อให้เจ้าของร้านค้าสามารถสร้างคำสั่งซื้อสำหรับการใส่ซ้ำจากข้อมูล WooCommerce และแกลเลอรีโหลดด้านข้างสำหรับรูปแบบต่างๆ (Woo อนุญาตเฉพาะแกลเลอรี่สำหรับผู้ปกครอง)
นี่คือตัวอย่างรวดเร็ว:
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
แตกต่างกันบ้าง มันมักจะให้บริการแก่ Javascript เป็น ajaxurl woocommerce.ajaxurl
ทั่วโลกหรืออาจจะซุกอยู่ในวัตถุอื่นเช่น คุณจะต้องสร้างวัตถุ Javascript ด้วยองค์ประกอบการกระทำที่ชี้ไปที่ฟังก์ชันของคุณและตัวแปรอื่น ๆ ที่คุณอาจต้องส่งผ่านไปยังการโทร 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