Wordpress aracılığıyla yapılamayan Silex sunucusuyla yapabileceğiniz çok az şey var, ancak WP'nin AJAX çağrılarına yanıt vermesi biraz çaba gerektiriyor.
İlk adım, aramayı AJAX üzerinden kullanılabilir hale getirmektir. Bunun için function.php dosyasına benzer bir satır eklemeniz gerekir
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
bu çağrı konuklar ve müşteriler için yapılacaksa (örn. ADMIN değil), hatta telefon hattına da ihtiyacınız olacaktır.
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
aynı şeyi yapar ama daha kapsayıcıdır.
Bir sonraki adım ajax çağrıları oluşturmaktır. Böyle bir çağrıya örnek vermiyorsunuz, bu yüzden yapabileceğim tek şey $ wpdb için dokümanlara bakmanızı tavsiye etmek . WP, veritabanından bilgi almak ve karmaşık sorgular için kapsamlı bir çağrı setine sahiptir, her zaman sizin için rastgele SQL çalıştıracak $ wpdb-> query () kullanabilirsiniz.
AJAX mantığı my_ajax_call () fonksiyonuna gider ve sonuç bir diziye veya nesneye yerleştirilmelidir. İşlevinizin son satırı, $ return döndürülecek nesne / dizi olan wp_send_json_success ($ return) çağrısı olmalıdır.
Bu sistemi kullanarak, mağaza sahiplerinin WooCommerce verilerinden yeniden stoklamak için satınalma siparişleri ve varyasyonlar için bir yan yük galerisi oluşturmalarına izin vermek için wp_admin bölümüne sayfa ekleyebildim (Woo, yalnızca üst öğe için bir galeriye izin verir).
İşte kısa bir örnek:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
Ve sonra javascript'te daha fazla adım gerekli. Bir kere, WP AJAX URL'sine ihtiyacınız olacak, /wp-admin/admin-ajax.php
ancak genellikle biraz değişebilir. Genellikle Javascript için global ajaxurl olarak kullanılabilir veya benzer bir nesneye sıkışmış olabilir woocommerce.ajaxurl
. İşlevinizi ve AJAX çağrısına iletmeniz gereken diğer değişkenleri gösteren bir eylem öğesiyle bir Javascript nesnesi oluşturmanız gerekir. Örneğin:
data = {'action':'my_ajax_call'}
veya
data = {'action':'my_ajax_call', 'todo':'getDate'}
(function($){
$.ajax{
url:ajaxurl,
data: data,
success: function(trn) {$('#data').html(trn.data)}
})(jQuery)
HTH