TL; DR
Es gibt keine JavaScript-API im WordPress-Kern und niemand ist geplant, aber tatsächlich besteht keine Notwendigkeit dafür.
Backend
Nehmen wir zunächst an, dass in Bezug auf das Backend einige nützliche Informationen aus bereits vorhandenen globalen JavaScript-Variablen abgerufen werden können (WordPress liebt alle globalen Varianten).
Z.B
ajaxurl
für die admin-ajax.php
URL, die in Ajax-Aufrufen verwendet werden soll
pagenow
für den aktuellen Admin-Seiten-Slug, z. B. 'Dashboard'
adminpage
für aktuelle Admin-Seitendatei, zB 'index-php' (Punkte werden durch hiphens ersetzt)
typenow
für aktuellen Post - Typen , während in edit.php
, post.php
oderpost-new.php
userSettings
kann verwendet werden, um Informationen über den aktuell angemeldeten Benutzer abzurufen
Diese Informationen geben Ihnen einen "Kontext" des Anwendungsstatus, während Sie sich im Backend befinden.
Für andere in der Frage erwähnte Dinge benötigen Sie keine "API", da supereinfache jQuery-Funktionen den Trick ausführen können. Um beispielsweise zu wissen, ob das Admin-Menü geschlossen ist, können Sie nach der "gefalteten" Klasse in body suchen:
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
Dokumentationsmangel
Für Dinge wie die vorherigen Snippets lohnt es sich nicht, Funktionen zu erstellen. WP hat bereits zu viele Funktionen in PHP. Ich hoffe wirklich, dass zusätzliche Funktionen wie diese nicht zum Kern hinzugefügt werden.
Was JavaScript in WordPress wirklich benötigt, ist mehr Dokumentation für vorhandene Funktionen: Keines der Dinge, die ich oben geschrieben habe, ist in offiziellen Dokumenten wie dem Codex oder in Quelldateien dokumentiert.
Vorderes Ende?
Bis hierher habe ich nur über das Backend gesprochen.
Dies liegt daran, dass so ziemlich alle Dinge, die im Frontend passieren, mit dem aktuell verwendeten Thema zusammenhängen. Stellen wir uns vor, es gibt eine von WordPress bereitgestellte JavaScript-Datei, die Funktionen zum Abrufen von Informationen zum aktuellen Anwendungsstatus enthält. Wenn ein Thema diese JS-Datei nicht in die Warteschlange stellt, sind diese Funktionen nicht verfügbar, und es wäre absolut falsch , ein Thema zu zwingen, ein solches Skript in die Warteschlange zu stellen.
Keine (andere) API erforderlich
In WordPress können jedoch alle Informationen, die Sie über PHP erhalten, problemlos auch in JavaScript und ohne AJAX-Anfrage verwendet werden. Die Funktion, die dies ermöglicht, ist wp_localize_script()
.
Angenommen, Sie möchten den aktuellen Benutzer und die Benutzerdaten wie die Benutzerrolle in Ihrem JavaScript abrufen und möchten auch die auf der aktuellen Seite verwendeten Abfragevariablen kennen. Sie können Folgendes tun:
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
In Ihrem Skript ist die MyScriptData.user
Variable ein JavaScript-Objekt mit allen Benutzerinformationen und allen Abfragevariablen.
Dies gilt für Backend- und Frontend-Skripte (mit anderen Worten: für beide "Seiten"). Es ist keine zusätzliche JavaScript-API erforderlich , um diese Informationen abzurufen. PHP ist ausreichend, wenn Sie die richtigen Methoden verwenden, um Informationen von PHP an JS zu übergeben.
Backbone.js
Backbone.js ist ein JavaScript-Framework, das eine (Art) MVC- Entwicklungsmuster mit JavaScript ermöglicht. Es war im Kern von WP 3.5 enthalten - hauptsächlich für die Mediengalerie.
Diese Bibliothek ist keine WordPress-JavaScript-API, da sie sicherlich eine leistungsfähigere JavaScript-Entwicklung ermöglicht, aber dieser Bibliothek wurde keine einzige WordPress-spezifische Funktion hinzugefügt, und sie ist die einzige aktuelle Kernverwendung von Backbone.js. Die Medienbibliothek ist mehr oder weniger undokumentiert und hat keine öffentliche API. Und AFAIK ist es nicht geplant, diese Lücke zu schließen. (Mehr als glücklich, diese Aussage zu ändern / zu entfernen - wenn jemand mir das Gegenteil beweisen kann).
WP-API
Wie von Rarst und Brian Fegter hervorgehoben , wird die WP-API Teil des Kerns sein (wahrscheinlich beginnend mit WP 4.1).
Aber ich muss sagen, dass es keine JavaScript-API ist. Es ist lediglich möglich, eine HTTP-Anforderung mit einem Anwendungsendpunkt zu verbinden, der von der WP-API gesteuert wird. Die API ruft Daten aus der Datenbank ab und gibt sie dort JSON-formatiert zurück. Beispiel aus den Dokumenten:
Möchten Sie die Beiträge Ihrer Website erhalten? Senden Sie einfach eine GET
Anfrage an /wp-json/posts
. Benutzer mit ID aktualisieren 4
? Senden Sie eine POST
Anfrage an /wp-json/users/4
. Alle Beiträge mit dem Suchbegriff "awesome" erhalten? GET /wp-json/posts?filter[s]=awesome
.
Da HTTP-Anforderungen und zugehörige JSON-Antworten mit jeder Sprache verarbeitet werden können , die HTTP-Anforderungen und das JSON-Datenformat unterstützt (darunter PHP, Ruby, Python, ASP usw.), besteht das Hauptziel der WP-API darin , das Abrufen und Festlegen von WordPress-Daten zu ermöglichen von Nicht-WP-Anwendungen. Das heißt, aus jeder Anwendung heraus , nicht nur aus WordPress.
Da JavaScript eine Sprache ist, die sowohl HTTP-Anforderungen als auch das JSON-Format verarbeiten kann, können Sie die WP-API auch in WordPress JavaScript verwenden. Jemand arbeitet auch an einem WP js-Client für diese API, aber
mit wp_enqueue_script()
+ die Ajax API + Wordpress PHP - Funktionen ist es möglich , alle Informationen , die Sie ohne zusätzliche API benötigen abzurufen. Und da alle drei "Inhaltsstoffe" WP-etablierte Standards sind, ist ihre Verwendung keine "eigene Lösung". Es werden lediglich Standardlösungen verwendet, um benutzerdefinierte (und allgemeine) Aufgaben zu erledigen. Darum geht es bei dieser Plugin-Entwicklung.
Es ist sogar möglich, JavaScript zur Verwendung der WP-API zu verwenden. Nur weil die WP-API JSON zurückgibt, wird sie nicht zu einer JavaScript-API. Es ist keine JavaScript-Funktion beteiligt (eine HTTP-Anforderung wird gesendet und ein JSON-Reposnse wird zurückgegeben. Ähnlich wie bei Verwendung der AJAX-API). Andernfalls sollte jeder Dienst, der JSON zurückgibt, als WordPress JS-API betrachtet werden. Die WP-API sollte als externe Service-API betrachtet werden , die JSON zurückgibt. Möglicherweise ist die Site, die diesen JSON-Service verwendet, dieselbe, die ihn bereitstellt.
Mit der WP-API kann nichts erreicht werden, was nicht auch mit der AJAX-API möglich ist. Mit der AJAX-API können jedoch viele Dinge getan werden. aber nicht mit der WP-API.
Ein Hinweis zur WP-API + Backbone.js
Mit Backbone.js ist es möglich, Informationen in Anwendungen abzurufen und zu speichern, die RESTful HTTP-Anforderungen unterstützen.
Das Problem ist, dass WordPress sowohl in "regulären" als auch in AJAX-Anfragen alles andere als REST-fähig ist: Es unterstützt $_GET
und $_POST
fordert standardmäßig nur Anfragen an, und die Verwendung der einen oder anderen mit derselben URl führt zu ... demselben Ergebnis .
Im Gegenteil, die WP-API ist REST-fähig, sodass Backbone-basierte Anwendungen sie für leistungsstarke JavaScript-Anwendungen nutzen können. Ich würde mich jedoch davon fernhalten, Backbone- oder WP-API oder Backbone + WP-API als JavaScript-API für WordPress zu definieren über.