Ich verwende ein Thema in WordPress. In diesem Thema mache ich einige AJAX-Anrufe, bei denen ich eine Antwort erwarte. ( http://example.com/capis/v0/packages/ )
Um über http-Aufrufen zu dienen, verwende ich silex als http-Server.
index.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Silex\Application;
$app = new Silex\Application();
$app->POST('/capis/v0/packages/', function(Application $app, Request $request) {
# logic
return new Response('HELLO');
});
$app->run();
Ich verwende PHP, um einen Server am 8080-Port auszuführen, der Daten für Ajax-Anrufe bereitstellt.
php -S localhost:8080 -t web web/index.php
Jetzt möchte ich diese Ajax-Anrufe nur mit WordPress bedienen. Ich möchte keinen bestimmten PHP-Server ausführen.
Antworten:
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
Wenn dieser Anruf für Gäste und Kunden (dh nicht für ADMIN) getätigt wird, benötigen Sie auch die Leitung.
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:
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 seinwoocommerce.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:oder
HTH
quelle