it-swarm.com.de

POST zu einem REST API aus einem WordPress-Formular

Ich möchte keine REST API zum Veröffentlichen in WordPress verwenden.

Ich möchte ein Formular auf einer WordPress-Seite erstellen, das ein POST an eine externe REST API sendet. Benutzer geben ihre Informationen ein und laden möglicherweise eine Datei hoch. Wenn die Presse "absenden" möchte, dass diese Informationen an eine REST API auf einem anderen Server (nicht WordPress) gesendet werden.

Gibt es Plugins, die dies erlauben? Hat das jemand gemacht? Natürlich könnte ich damit in Schwierigkeiten geraten: http://en.wikipedia.org/wiki/Same_Origin_policy

Es sieht so aus, als ob ich das Gegenteil tun möchte: http://wordpress.org/extend/plugins/json-api/ Anstatt eine REST -API für WordPress zu erstellen, möchte ich dies tun WordPress-Kommunikation veranlassen Senden eines POST an eine externe REST -API, wenn ein Benutzer eine Schaltfläche in einem Formular drückt.

2
TimO

Ich kenne kein Plugin, das das allgemein macht. In den meisten Fällen müssen Sie für jede spezifische API, mit der Sie kommunizieren möchten, eine benutzerdefinierte Komponente erstellen.

Für Ihre Zwecke ist die Schlüsselfunktion wp_remote_post(), ein Wrapper für die Methode POST der HTTP-Klasse von WP. (Verwenden Sie diese Option, anstatt manuelle cURL-Anforderungen zu erstellen, da WP_Http über alle Arten von Fallbacks für verschiedene HTTP-Transportmodi verfügt.) Hier eine nette Einführung: http://yoast.com/wp-best-practice/wordpress-http- api/ Same Origin-Richtlinien gelten im Allgemeinen nur für Browser. wp_remote_post() und sein Ilk werden auf dem Server ausgelöst.

Das Senden von Daten ist ziemlich einfach - fügen Sie einfach ein Array in den 'Hauptteil' Ihres wp_remote_post()-Aufrufs ein. Der schwierige Teil ist immer die Authentifizierung - erwartet der API-Server einen vorregistrierten Schlüssel oder eine Art von oAuth-Übergabe oder was auch immer. Wenn es so einfach wie ein gemeinsamer Schlüssel ist, können Sie ihn einfach als Teil der Nutzlast von 'body' übergeben.

3
Boone Gorges