Mit dem Silex-Server können Sie nur wenig tun, was nicht über Wordpress möglich ist. Es ist jedoch ein wenig mühsam, WP dazu zu bringen, auf AJAX-Anrufe zu antworten.
Der erste Schritt besteht darin, den Anruf über AJAX verfügbar zu machen. Dies erfordert das Hinzufügen einer Zeile zu Ihrer Datei functions.php, ähnlich wie
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
Wenn dieser Anruf für Gäste und Kunden (dh nicht für ADMIN) getätigt wird, benötigen Sie auch die Leitung.
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
das macht das gleiche, ist aber integrativer.
Der nächste Schritt besteht darin, die Ajax-Aufrufe zu erstellen. Sie geben kein Beispiel für einen solchen Aufruf an, daher kann ich Ihnen nur raten, in den Dokumenten nach $ wpdb zu suchen . WP verfügt über eine umfassende Reihe von Aufrufen zum Abrufen von Informationen aus der Datenbank. Für komplexe Abfragen können Sie jederzeit $ wpdb-> query () verwenden, um beliebiges SQL für Sie auszuführen.
Die AJAX-Logik geht in die Funktion my_ajax_call () und das Ergebnis sollte in ein Array oder Objekt eingefügt werden. Die letzte Zeile Ihrer Funktion sollte ein Aufruf von wp_send_json_success ($ return) sein, wobei $ return das Objekt / Array von Informationen ist, das zurückgegeben werden soll.
Mit diesem System konnte ich dem Abschnitt wp_admin Seiten hinzufügen, damit Ladenbesitzer Bestellungen für die Wiederauffüllung von WooCommerce-Daten und eine Seitenladegalerie für Variationen erstellen können (Woo erlaubt nur eine Galerie für die Eltern).
Hier ist ein kurzes Beispiel:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
Und dann sind im Javascript weitere Schritte erforderlich. Zum einen benötigen Sie die WP AJAX-URL, die normalerweise /wp-admin/admin-ajax.php
aber etwas variieren kann. Es wird Javascript oft als globales Ajaxurl zur Verfügung gestellt oder kann in einem anderen Objekt wie versteckt sein woocommerce.ajaxurl
. Sie müssen ein Javascript-Objekt mit einem Aktionselement erstellen, das auf Ihre Funktion und alle anderen Variablen verweist, die Sie möglicherweise an den AJAX-Aufruf übergeben müssen. Beispielsweise:
data = {'action':'my_ajax_call'}
oder
data = {'action':'my_ajax_call', 'todo':'getDate'}
(function($){
$.ajax{
url:ajaxurl,
data: data,
success: function(trn) {$('#data').html(trn.data)}
})(jQuery)
HTH