Selon cet article, il n'y a pas d'API JavaScript intégrée pour Wordpress. Par conséquent, les développeurs qui veulent s'appuyer sur AJAX semblent proposer tous leur propre solution qui ne me semble pas juste.
Ce qui me manque vraiment en dehors de la récupération de publications ou de toute autre donnée avec une API intégrée, c'est un petit ensemble de fonctions JavaScript pour gérer l'interface principale et frontale. Maintenant, est-il prévu quelque chose concernant ce problème?
Par exemple, j'aimerais savoir que
- le menu principal de gauche est effondré,
- quel utilisateur est connecté
- de quel groupe il s'agit,
- même les données client comme le navigateur
et ainsi de suite.
ajax
javascript
wp-enqueue-script
api
wp-localize-script
stackoverclan
la source
la source
Réponses:
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 ajaxpagenow
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 coursedit.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:
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:
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:
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.
la source
SHORTINIT
vous pouvez rendre ajax beaucoup plus rapide. Faire de même avec WP API serait beaucoup plus difficile. Btp, qu'est-ce qu'une vraie application accrocheuse? Astuce: n'utilisez pas WordPress.Il y a eu pas mal de développement autour de l'API JSON REST qui est censé être fusionné dans la version 4.1 . Je crois que ça va officiellement s'appeler «l'API WP». Vous pouvez commencer à utiliser la base de code maintenant et suivre les derniers développements ici jusqu'à ce qu'elle atteigne le cœur. Ryan McCue et son équipe ont étoffé une assez bonne documentation ici .
la source
Alors que WP était historiquement centré sur le back-end, une déclaration avait été faite depuis des années sur le passage à une utilisation intensive du JS. Compte tenu des engagements de compatibilité ascendante, il est douteux que JS atteigne la parité ou prenne le contrôle de PHP de sitôt (à mon avis), mais il y a eu des progrès à ce sujet.
L'administrateur WordPress est désormais livré avec Backbone et Underscore, qui constituaient une grande partie de la dernière itération de la bibliothèque multimédia. Malheureusement, les détails de la mise en œuvre sont très peu documentés et l'utilisation par des tiers a été relativement impopulaire.
Le plugin REST API est en cours de développement en tant que «plugin de fonctionnalités» avec l'intention officielle d'être inclus dans le noyau WordPress à l'avenir.
la source
Pour répondre à votre affirmation:
Il n'y a pas de "propre solution" à faire. Vous pouvez faciliter les choses en utilisant ATP avec
ajax_template_part()
par @GM ou des plugins similaires et prendre un raccourci, mais il n'y a toujours pas de moyen non standard d'aller avec AJAX dans WordPress. Ces «propres solutions» / façons (la plupart du temps) le font mal . Les appels AJAX se font (grosso modo) comme ceci:$.ajax()
et des fonctions similaires pour réagir à l'interaction de l'utilisateur. Travaillez avec l'objet JS global (localisé) pour renvoyer les données au rappel PHP.wp_send_json_success()
et renvoyez les données JSONifies à l'aide de fonctions similaires.Si un plugin ou un thème ne le fait pas de cette façon, l'auteur n'a pas lu les choses ou n'a pas regardé d'exemples. Il y a un squelette pour ce qui devrait être utilisé.
Des informations plus détaillées sur la façon de gérer AJAX dans WP peuvent être trouvées dans le livre de la communauté "WordPressTheRightWay" .
WordPress n'est tout simplement pas spécifique dans ce que vous devez faire avec AJAX. C'est pourquoi vous pouvez à peu près tout mettre dans un tableau localisé / globalisé et le rendre disponible pour vos appels AJAX. Et cela va parfaitement dans le sens du fonctionnement de Backbone: vous devez faire les choses que vous aimez, vous voulez les faire.
Si vous voulez utiliser un framework MVC JavaScript comme les AngularJs, alors vous êtes au mauvais endroit. Il existe d'autres CMS comme OctoberCMS, Drupal8, etc. qui sont bien meilleurs pour fournir une base pour cela. WordPress vous obligerait à créer un ensemble personnalisé de points de terminaison de réécriture où vous pouvez retourner des ensembles de données pour vos contrôleurs JS.
la source