Mit Admin-Ajax als Endpunkt Front-End-AJAX-Anforderungen zu verarbeiten ist zu einem Standard geworden, weil es funktioniert, und es ist als "Wordpress Weg." Gesehen, aber es ist nicht besonders performant. Darüber hinaus Einstellung erfordert es für jede Anforderung ein System zur Validierung, Hygienisierung und Nonce Überprüfung auf.
Natürlich sind viele Entwickler, mich eingeschlossen, erstellen Systeme für ihre Verwendung von Admin-Ajax-abstrahierende oder eine benutzerdefinierte APIs für die Front-End-AJAX erstellen. Das ist eine intelligente, was zu tun, aber es trägt nicht zum Code Wartbarkeit, da jeder seinen eigenen Weg, es zu tun, und es gibt keinen richtigen Standard.
Die REST-API kann das ändern. Es definiert: "Die Wordpress-Way" für kundenspezifische APIs zu schaffen, die für die Reaktion auf Front-End-AJAX-Anfragen verwendet werden können. Die REST-API bietet fantastische Architektur für Hygienisierung, Validierung und Authentifizierung von Anfragen.
In diesem Artikel werde ich Ihnen zeigen, wie eine Front-End-Form zu erstellen, die Benutzer mit der Teilnehmerrolle Beiträge einreichen lassen. Ein großer Anwendungsfall für diese Art von System ist Mitwirkenden zu ermöglichen Entwürfe oder Geschichte Teilungen von dem Front-End zu unterbreiten.
Das Beispiel, das ich basiert auf Wordpress vorhandenen Fähigkeiten System am zeigt und vertraut ihm die unbefugte Erstellung veröffentlicht Beiträge zu verhindern - etwas, das ein großes Risiko, wenn ein traditionelles AJAX-Request um wp_insert_post () gewickelt wird.
Dieses Beispiel aus der Praxis ist in der Regel auch Ihnen zeigen, wie Sie die REST-API verwenden können Admin-Ajax in dem Front-End zu ersetzen. Wegen des Beispiels ich gewählt haben, können wir eine Standard-Post-Endpunkt "wp-json / wp / v2 / posts" verwenden, anstatt einen benutzerdefinierten Endpunkt zu schaffen. Das ist großartig, und bedeutet, dass wir fast keine serverseitigen Code werde schreiben.
In einigen Fällen müssen Sie benutzerdefinierte Endpunkte der REST-API für AJAX hinzuzufügen. Wenn das benötigt wird, empfehle ich durch die Lektüre.
Auch bitte beachten Sie, dass dieser Artikel wird vorausgesetzt, Sie verwenden die Version 2 des API. Es ist möglich, und hoffentlich wird bald in Wordpress Kern verschmolzen werden.
Wenn Sie die komplette Quelle für die Beispiele in diesem Artikel sehen möchten, können Sie. Ich habe sie in ein kleines Plugin verpackt:
Im Beispiel, das ich Ihnen in diesem Artikel bin zeigt, ist JSON eine durchaus akzeptable Format, um die Daten zu erhalten, wieder. In vielen Fällen, wenn Sie schauen Admin-Ajax mit dem REST-API zu ersetzen, können Sie es vorziehen, Klartext zu bekommen, HTML oder sogar Bilder von der API zurück.
Während die REST-API JSON zurückkehren soll, ist es auch sehr flexibel erweiterbar. Der "rest_pre_serve_request" Filter bietet einen Einstiegspunkt eine Anfrage und reagieren mit jeder gewünschten Daten zu kapern. Das könnte eine zuvor zwischengespeicherte Antwort, Text, XML, ein Bild sein - was auch immer. Wenn das Filter auf etwas anderes als null gesetzt wird, dann wird sein Wert serviert werden, statt mit dem Rest (Wortspiel beabsichtigt) der REST-API-Prozess fortgesetzt wird.
Ehrlich gesagt, es gibt nichts besonders aufregend zu wissen, was ich bin, Ihnen zu zeigen. Es ist sehr Standard-Sachen. Das ist genau der Punkt, den ich versuche zu vermitteln. Die Tatsache, dass ich diesen Abschnitt zu folgen, wie es funktioniert, mit einer Aufschlüsselung dessen, was habe ich nicht zu tun haben, spricht, wie genial diese neue REST-API wirklich ist.
Um diese Arbeit zu machen, habe ich ein Formular mit drei Feldern: Titel, Auszug und Inhalt. Ich verließ Inhalt als nicht erforderlich Feld als dass Auszug verwendet werden können "pitches" für Beiträge zu erstellen. Sie können das Formular an Ihre Bedürfnisse anzupassen.
Ich schrieb eine einfache Funktion, süchtig the_content meine Form Markup zu erzeugen, wenn eine Seite mit dem Slug "Eintragen-post" ausgegeben wurde. Sie könnten Ihre Form direkt in eine Vorlagendatei in Ihrem Thema oder ein Kind Thema schreiben, wenn man wollte.
Darüber hinaus habe ich nur Ausgang für das Formular in der angemeldeten Benutzer, der die Fähigkeit hatte, um Beiträge zu bearbeiten - IE die mit der Teilnehmerrolle oder höher. Dies ist nicht zu 100% notwendig, da das Formular nicht für abgemeldet Benutzer funktionieren würde, oder Abonnenten. Jedoch gibt es keine Notwendigkeit, eine nicht-funktionelle Form zu zeigen. Stattdessen habe ich einen Link zu wp-Login für angemeldete Benutzer nicht angemeldet.
Hier ist der Haken und Funktion, die die Markup erstellt:
add_filter ( 'the_content', function ($ content) {
gfi Endpoint-Security 2013 Endpoint-Security-10