Qu’est ce qu’une API ?

Pour commencer, il faut comprendre qu’une API est simplement un accès « distant » à un système. Dans le cas de WordPress, c’est un accès qui permet d’accéder à du contenu de la base de données et d’exécuter des fonctionnalités à distance.

Une API (Applications Programming Interface) permet à des développeurs, de concevoir des scripts qui pourront s’authentifier sur WordPress pour y créer, modifier, supprimer ou récupérer des contenus dans le but d’automatiser des actions.

L’API WordPress, une nouveauté de la 4.7 ?

L’API de WordPress n’est pas une nouveauté. En effet, comme nous l’avions écrit dans notre article consacré à l’API XML-RPC de WordPress, une API est activée par défaut depuis WordPress 3.5.

La nouveauté est qu’il s’agit d’une nouvelle API de type REST, conçue avec les standards d’aujourd’hui et entièrement intégrée au cœur de WordPress sans avoir besoin d’installer un plugin. Ce qu’il faut également retenir c’est que cette nouvelle API a été repensée de zéro pour être compatible avec les nouveaux usages du web.

Comment activer l’API REST de WordPress ?

Bien que l’API REST soit native, elle ne fonctionne pas directement après une nouvelle installation de WordPress 4.7. Pour l’activer, il suffit d’activer la réécriture d’URL. Rassurez-vous, il est fort probable que vous ayez déjà activé cette option.

Vérifier que l’API fonctionne

Pour commencer à « consommer » l’API de votre WordPress, commençons par voir si elle fonctionne correctement.

Pour cela, rendez-vous simplement sur votre site à l’adresse /wp-json/ avec votre navigateur préféré. Vous devriez tomber sur une page qui ressemble à celle-là :

Cette page est une sorte de documentation pour un programme qui voudrait utiliser l’API.

A noter également que si vous êtes sur une version de WordPress 4.5 ou 4.6, vous risquez d’avoir une réponse mais celle-ci sera beaucoup plus courte.

En effet, l’API REST a été intégrée dès WordPress 4.5 celle-ci ne disposait d’aucune fonctionnalité sans l’installation d’un feature plugin. Si vous êtes dans ce cas, mettez à jour votre installation pour bénéficier des dernières fonctionnalités

 

Étudions la réponse de l’API REST

Par convention, il est courant de récupérer les données d’une API REST au format JSON. Sans surprise, c’est ce nouveau format que WordPress utilise dans cette nouvelle API (la précédente utilisait du XML).

Pour vous aider à y voir plus clair, voici la réponse de l’API vue précédemment, une fois formatée et en affichant uniquement le 1er niveau de réponse.

Vous voyez que l’API retourne un objet JSON comportant les propriétés suivantes :

  • name : Le nom du site wordpress
  • description : Le slogan du site wordpress
  • url : L’adresse du site wordpress
  • home : L’adresse de la home du site wordpress (la page du blog)
  • routes : L’ensemble des actions proposées par cette API

Maintenant, regardons ce que propose l’API en ouvrant le contenu de routes :

Vous retrouverez ainsi la liste exhaustive des fonctionnalités proposées à travers cette API, avec le format des requêtes autorisées.

Détaillons quelques-unes de ces routes :

« / » La documentation complète de l’API (c’est ce que nous affichons ci-dessus)

« /oembed/1.0 » Liste des fonctionnalités du service oembed (il s’agit d’une API dans l’API réservée au réseaux sociaux que nous ne détaillerons pas ici

« /wp/v2 » Liste des fonctionnalités du cœur de WordPress.

« /wp/v2/posts » Méthode permettant la création d’un post, ainsi que la recherche de posts

« /wp/v2/posts/(?P<id>[\\d]+) » Méthode permettant la consultation, modification ou suppression d’un post existant, à partir de son ID

« /wp/v2/users » Méthode permettant la création d’un utilisateur, ainsi que la recherche d’utilisateurs.

« /wp/v2/users/(?P<id>[\\d]+) » Méthode permettant la consultation, modification ou suppression d’un utilisateur existant, à partir de son ID

« /wp/v2/users/me » Méthode permettant la consultation, modification du compte utilisateur actuellement connecté sur l’API

« /wp/v2/settings » Méthode permettant de consulter et modifier la configuration de WordPress

En complément, n’hésitez pas à regarder la documentation officielle de chaque ressource.

Exemple d’utilisation en PHP

Maintenant que vous avez découvert le cœur de l’API REST de WordPress, voyons un cas d’utilisation très basique en PHP.

Écrivons un script PHP capable d’interroger l’API d’un WordPress pour récupérer les informations publiques comme le nom ou la description (le slogan).

Commençons par écrire une fonction permettant de lancer une requête vers l’API. Attention, nous codons volontairement une fonction très simpliste (sans contrôle d’erreur) afin de ne pas complexifier l’exemple

Vous pouvez utiliser cette fonction get() pour interroger n’importe quelles méthodes GET proposées par l’API.

Félicitations ! Vous avez réussi à utiliser l’API REST de votre WordPress pour récupérer une information à distance. Alors, c’était plutôt facile, non ?

Récupérer la liste des pages via l’API

Pour continuer, essayons maintenant de récupérer la liste des pages

Page 77 : ssii-web-rouen
Page 76 : agence-web-rouen
Page 75 : developpeur-freelance-rouen
Page 8 : articles
Page 7 : actualites
Page 6 : realisations
Page 5 : contact
Page 4 : mentions-legales
Page 2 : accueil

Comme nous l’avons vu, la récupération d’information est très facile. Voyons maintenant comment passer des paramètres à notre requête pour avoir des résultats affinés.

Trier les résultats

Améliorons notre fonction get() pour qu’elle puisse gérer des paramètres à envoyer à l’API

Regardons dans la documentation (ou dans le retour JSON), les paramètres acceptés par la méthode « wp/v2/pages« . A noter que si votre WordPress est en français, le retour JSON sera en français contrairement à la documentation en ligne qui est uniquement en anglais.

Pour effectuer un tri sur les résultats de notre recherche, vous devez passer 2 paramètres : orderby pour préciser la colonne de tri et order pour indiquer le sens.

Page 2 : accueil
Page 4 : mentions-legales
Page 5 : contact
Page 6 : realisations
Page 7 : actualites
Page 8 : articles
Page 75 : developpeur-freelance-rouen
Page 76 : agence-web-rouen
Page 77 : ssii-web-rouen

Filtrer les pages contenant un mot-clé

Nous appliquons maintenant un terme de recherche « Normandie » afin de retrouver uniquement les pages qui parlent de Normandie.

Page 4 : mentions-legales
Page 8 : articles

Récupérer le résumé d’une page

Voyons comment récupérer l’excerpt de chaque article trouvé :

Page 4 : mentions-legales
Informations légales Propriété Le site diffusé à l’adresse http://wixiweb.fr est la pr…


Page 8 : articles
Hackhours : 28 heures pour concevoir et développer un projet Web’Trophées : Les meilleurs…


Aller plus loin avec l’Authentification

Actuellement, il semblerait que les méthodes demandant une authentification nécessite l’installation d’un plugin d’authentification.

Voici les plugins à utiliser en fonction du type d’authentification choisi:

La méthode conseillée pour le moment semble être celle de l’Oauth. Nous compléterons l’article lorsque nous aurons fait des tests un peu plus poussés à ce sujet.

Conclusion : Notre avis sur l’API REST de WordPress

L’API REST est vraiment une bonne chose pour les développeurs utilisant WordPress. Cette API peut permettre à des startups de lancer de nouveaux services sans nécessairement avoir besoin d’installer un plugin, de permettre à des sociétés ayants plusieurs sites de croiser facilement le contenu entre eux, de permettre d’utiliser WordPress comme backoffice d’une application mobile pour l’édition du contenu, d’automatiser des tâches à distance sur un WordPress, etc..

Toutefois, nous trouvons dommage que cette API soit activée par défaut avec un accès public. En effet, elle va permettre à n’importe qui de récupérer très facilement tout le contenu public sans avoir besoin de webscrapper la page. Rappelons que WordPress est le CMS le plus utilisé au monde et que la version 4.7 a déjà été installée 4 millions de fois à 1 semaine de sa sortie. Nous risquons donc de voir arriver rapidement certaines dérives.

Alors, qu’avez-vous pensé de cet article ? Et que pensez-vous de l’arrivée de cette API ?