TL; DR
Il n'y a pas d'API JavaScript dans le noyau WordPress et personne n'est prévu, mais en fait, il n'y en a pas besoin.
Backend
Tout d'abord, disons que, en ce qui concerne le backend, certaines informations utiles peuvent être récupérées à partir de variables globales JavaScript déjà présentes (WordPress aime toutes les saveurs globales).
Par exemple
ajaxurl
pour que l' admin-ajax.php
url soit utilisée dans les appels ajax
pagenow
pour le slug de la page d'administration actuelle, par exemple «tableau de bord»
adminpage
pour le fichier de page d'administration actuel, par exemple 'index-php' (les points sont remplacés par hiphens)
typenow
pour le type de message en cours edit.php
, post.php
oupost-new.php
userSettings
peut être utilisé pour obtenir des informations sur l'utilisateur actuellement connecté
Ces informations vous donnent un "contexte" de l'état de l'application lorsque vous êtes dans le backend.
Pour les autres choses mentionnées dans la question, vous n'avez besoin d'aucune "API", car les fonctions jQuery super simples peuvent faire l'affaire. Par exemple, pour savoir si le menu d'administration est fermé, vous pouvez vérifier la classe "repliée" dans le corps:
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
Manque de documentation
Pour des choses comme les extraits précédents, cela ne vaut pas la peine de créer des fonctions. WP a déjà trop de fonctions en PHP. J'espère vraiment que des fonctions supplémentaires comme celles-ci ne seront pas ajoutées au noyau.
Ce dont JavaScript a vraiment besoin dans WordPress, c'est de plus de documentation pour les fonctionnalités existantes: aucune des choses que j'ai écrites ci-dessus n'est documentée dans les documents officiels comme le Codex ou dans les fichiers source.
L'extrémité avant?
Jusqu'à présent, je n'ai parlé que du backend.
En effet, à peu près toutes les choses qui se produisent sur le frontend sont liées au thème actuellement utilisé. Imaginons qu'il existe un fichier JavaScript fourni par WordPress contenant des fonctions pour obtenir des informations sur l'état actuel de l'application; si un thème ne met pas en file d'attente ce fichier JS, ces fonctions ne sont pas disponibles et forcer un thème à mettre en file d'attente un tel script serait absolument faux.
Pas besoin d'une (autre) API
Cependant, dans WordPress, toutes les informations que vous pouvez obtenir via PHP peuvent également être facilement utilisées en JavaScript et sans aucune demande AJAX. Cette fonction qui rend cela possible est wp_localize_script()
.
Supposons que vous souhaitiez obtenir l'utilisateur actuel et les données utilisateur comme son rôle d'utilisateur dans votre JavaScript et que vous souhaitiez également connaître les variables de requête utilisées dans la page actuelle, vous pouvez effectuer les opérations suivantes:
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
En faisant cela dans votre script, la MyScriptData.user
variable sera un objet JavaScript avec toutes les informations utilisateurs toutes les variables de requête.
Ceci est valable pour les scripts backend et frontend (en d'autres termes: pour les deux "côtés"). Il n'est pas nécessaire de disposer d'une API JavaScript supplémentaire uniquement pour récupérer ces informations. PHP est suffisant si vous utilisez les moyens appropriés pour transmettre des informations de PHP à JS.
Backbone.js
Backbone.js , est un framework JavaScript qui permet une (sorte de) modèle de développement MVC avec JavaScript. Il a été inclus dans le noyau avec WP 3.5 - principalement pour gérer la galerie multimédia.
Cette bibliothèque n'est pas une API JavaScript WordPress, car elle permet sûrement un développement JavaScript plus puissant, mais aucune fonction spécifique à WordPress n'a été ajoutée à cette bibliothèque et c'est la seule utilisation principale actuelle de Backbone.js. La médiathèque est plus ou moins non documentée et n'a pas d'API publique. Et AFAIK, il n'est pas prévu de combler cette lacune. (Plus qu'heureux de changer / supprimer cette déclaration - si quelqu'un peut me prouver le contraire).
WP-API
Comme souligné par Rarst et Brian Fegter , l'API WP va faire partie du noyau (probablement à partir de WP 4.1).
Mais je dois dire que ce n'est pas une API JavaScript. Il permet simplement de connecter une requête HTTP à un point de terminaison d'application contrôlé par WP-API. Et l'API récupère les données de la base de données et les renvoie au format JSON. Exemple de la documentation:
Vous souhaitez obtenir les publications de votre site? Envoyez simplement une GET
demande à /wp-json/posts
. Mettre à jour l'utilisateur avec l'ID 4
? Envoyez une POST
demande à /wp-json/users/4
. Obtenez tous les messages avec le terme de recherche "génial"? GET /wp-json/posts?filter[s]=awesome
.
Comme les requêtes HTTP et les réponses JSON associées peuvent être gérées avec n'importe quel langage qui prend en charge les requêtes HTTP et le format de données JSON (dont PHP, Ruby, Python, ASP, etc.), l' objectif principal de l' API WP est de permettre d'obtenir et de définir des données WordPress à partir d'applications non WP. Cela signifie que depuis n'importe quelle application , pas seulement WordPress.
Bien sûr, puisque JavaScript est un langage qui peut gérer à la fois les requêtes HTTP et le format JSON, vous pouvez également utiliser l'API WP à partir de JavaScript WordPress. Quelqu'un travaille également sur un client WP js pour cette API, mais
en utilisant wp_enqueue_script()
+ l'API Ajax + les fonctions PHP WordPress, il est possible de récupérer toutes les informations dont vous avez besoin sans aucune API supplémentaire. Et puisque les trois "ingrédients" sont des normes établies par WP, leur utilisation n'est pas une "propre solution". Il utilise simplement des solutions standard pour effectuer des tâches personnalisées (et courantes), c'est précisément le but de ce développement de plugins.
il est même possible d'utiliser JavaScript pour utiliser l'API WP. Tout simplement parce que WP-API renvoie JSON, il n'en fait pas une API JavaScript. Il n'y a pas de fonction JavaScript impliquée (une requête HTTP est envoyée et un référentiel JSON est retourné. À peu près la même chose que ce qui se passe en utilisant l'API AJAX). Sinon, tout service qui renvoie JSON doit être considéré comme une API WordPress JS. La WP-API doit être considérée comme une API de service externe qui renvoie JSON, et il se peut que le site qui consomme ce service JSON soit le même qui le fournit.
il n'y a pas une seule chose qui puisse être faite avec l'API WP qui ne peut pas aussi être faite en utilisant l'API AJAX. Mais il y a beaucoup de choses qui peuvent être faites avec l'API AJAX. mais pas avec l'API WP.
Une note sur WP-API + Backbone.js
Avec Backbone.js, il est possible d'obtenir et d'enregistrer des informations dans des applications qui prennent en charge les requêtes HTTP RESTful .
Le problème est que WordPress, à la fois dans les requêtes "régulières" et dans celles AJAX, est tout sauf RESTful: il ne prend en charge $_GET
et ne $_POST
demande que par défaut, et l'utilisation de l'un ou l'autre avec le même URl aboutit ... au même résultat .
Au contraire, l'API WP est RESTful, donc les applications basées sur Backbone peuvent en tirer parti pour les applications JavaScript puissantes, mais je resterais à l'écart de définir Backbone ou WP API ou Backbone + WP API comme API JavaScript pour WordPress pour les choses dites au dessus de.