WordPress REST API : au cœur du CMS

Le système de gestion de contenu (CMS pour Content Management System) WordPress jouit d’une grande popularité. Comparé à d’autres CMS, il permet de créer assez facilement des sites Internet répondant à différents besoins. Avec de solides connaissances d’Office, soigner sa présence sur le Web à l’aide d’un rédacteur ne pose aucun problème. Par ailleurs, les administrateurs Web ont accès à plus de 55 000 plugins capables d’exécuter les nombreuses tâches d’un site Internet et qui sont, pour la plupart, gratuits dans leur version de base.

Conseil

Nous avons intégré tous les avantages pour votre site Internet WordPress dans nos packs « Essential », « Business » et « Unlimited ». Profitez de la configuration facile, de la sécurité intégrée et de la plateforme optimisée pour votre hébergement WordPress.

Qu’est-ce que l’API REST de WordPress ?

Le nom WordPress REST API désigne une interface permettant de communiquer avec la base de données utilisée par WordPress. L’abréviation API signifie « Application Programming Interface », en français « Interface de programmation d’application ». Elle permet l’échange entre différents logiciels en respectant une logique prédéfinie, à l’instar de deux personnes qui peuvent discuter et se comprendre uniquement en parlant une langue commune. Retrouvez des informations plus détaillées sur notre article « API : ce qu’il faut savoir sur les interfaces de programmation ».

L’abréviation REST signifie « Representational State Transfer ». Il s’agit des principes de l’échange informatique tels que définis en 1994 par l’informaticien américain Roy Fielding :

  • Unité : les URL pour accéder aux ressources doivent être uniques, cohérentes et disponibles par le biais d’une méthode commune, comme GET.
  • Séparation client/serveur : si la technologie évolue côté serveur (p. ex. WordPress), l’application côté client (p. ex. une application) doit toujours pouvoir y accéder.
  • Sans état : le serveur ne change pas d’état lorsqu’il reçoit une nouvelle requête de l’API. Le serveur n’enregistre pas les requêtes.
  • Peut être mis en cache : assure une rapidité et une conformité excellentes côté serveur et côté client.
  • Système à couches : l’accès est possible sur différentes couches (layer).
  • Code on Demand (optionnel) : le code pour l’exécution locale est transmis au client uniquement en cas de besoin.

Depuis la version 4.7 de WordPress, ces exigences sont intégrées dans le Core, la programmation centrale du système de gestion de contenu. Auparavant, jusqu’au 13 mai 2018, il fallait utiliser le plugin « WP REST API (WP API) ». Depuis la version 5.x, d’autres éléments ont été ajoutés au core de WordPress pour étendre les possibilités de communication avec d’autres applications (également des applications Web).

Hébergement Managed WordPress avec IONOS !

Lancez votre site Web et bénéficiez d'une plateforme optimisée et de la version la plus récente et la plus sûre de WordPress ! Avec 1 nom de domaine inclus la 1ère année.

Domaine
Certificat SSL
Assistance 24/7

Que peut-on faire avec l’API REST de WordPress ?

L’interface permet de communiquer directement avec la base de données utilisée par WordPress, où toutes les informations d’un site Internet sont stockées. Cette base de données est exploitée par le système de gestion de bases de données MySQL, un logiciel open source. Il existe des commandes pour communiquer qui autorisent l’accès via l’API WordPress « intégré ». Plusieurs méthodes existent pour y parvenir.

Accès à la base de données avec l’interpréteur de commandes

WordPress REST API permet d’accéder au contenu d’un site WordPress grâce à l’invite de commande sous Windows :

  • Clic droit sur le logo Windows > « Exécuter » > taper « cmd » dans la fenêtre > « OK »
  • Activer la recherche dans la barre des tâches > taper « cmd » > cliquer sur « Invite de commande »

Ou avec Terminal sous macOS :

  • Appuyer en même temps sur les touches « cmd » + [espace], taper « Terminal », puis double-cliquer sur le résultat de la recherche
  • Dans la partie haute du menu sur le bureau, choisissez « Aller à » > « Fonctionnalités » ; dans la fenêtre qui s’ouvre, double-cliquer sur « Terminal »
  • Dans le « Dock », cliquer sur « Programmes » > « Fonctionnalités » > « Terminal »

Entrez la commande suivante dans l’invite clignotante sur l’écran, par exemple après

C:\Users\VotreNomUtilisateur>_

Entrez la commande suivante :

curl -X OPTIONS -i https://votredomaine.fr/wp-json/

Lancez le processus en appuyant sur « Entrée ». En quelques instants, le résultat s’affiche à l’écran. Il s’agit des données de base du site Internet et des options autorisées (« OPTIONS »). On peut, entre autres, voir que la commande GET est autorisée : « Allow: GET ».

Entrez la commande suivante :

curl -X GET http://votredomaine.fr/wp-json/

Vous obtenez toutes les informations de la base de données, un contenu identique à celui que vous récupérez avec la méthode décrite dans la section suivante.

Utiliser l’API REST de WordPress dans le navigateur

Vous pouvez également lire le contenu d’une base de données WordPress à l’aide d’une requête HTTP dans le navigateur. On utilise cette fois encore JSON :

https://votredomaine.fr/wp-json/
Remarque

JSON est l’abréviation de « JavaScript Object Notation », un format texte pour l’échange de données. Il est facile à apprendre et à lire et polyvalent à l’utilisation, comme le montrent, entre autres, notre tutoriel JSON-LD d’après Schema.org et notre article sur les requêtes interdomaines avec JSONP.

Les informations interrogées vous sont présentées comme sur un livre ouvert. Pour consulter plus en détails le contenu du site, l’API REST de WordPress permet une interrogation à l’aide d’un grand nombre de commandes pour retourner des composantes précises de la base de données. On peut ainsi par exemple interroger les posts (publications) avec :

https://votredomaine.fr/wp-json/wp/v2/posts

Vous obtenez un aperçu de toutes les publications présentes dans la base de données, y compris les éventuelles versions antérieures, les liens, les contenus médiatiques, les auteurs et bien plus. Chaque publication est identifiée de manière univoque dans la base de données WordPress par son ID :

Cette fois, pour consulter une publication précise dans le navigateur, on complète la commande avec son ID :

https://ihredomain.de/wp-json/wp/v2/posts/6576

Cette procédure s’applique à tous les contenus : outre les publications, on peut rechercher les pages (pages), les contenus médiatiques (media), les auteurs (author) et bien plus. Le guide de l’API REST de WordPress et l’ensemble de ses commandes est disponible sur les pages développeurs du site WordPress.org, à la rubrique REST API Handbook.

L’API REST de WordPress en pratique

Dans quels cas peut-on avoir besoin de cette API WordPress ? Prenons un exemple simple et pratique pour l’illustrer : un nouveau site Internet doit recueillir les actualités d’autres sites Internet. Cette opération fonctionne avec l’API REST de WordPress uniquement si les sites déjà existants sont programmés sous WordPress. Une requête est envoyée sur les serveurs choisis pour obtenir les contenus et leurs ID.

Plusieurs options de programmation permettent de retourner toujours les contenus les plus récents, notamment avec le script PHP ou la bibliothèque jQuery de JavaScript. Découvrez ces méthodes à l’aide de deux exemples de code simple pour l’API de WordPress.

Lire une publication avec PHP

Pour lire une publication d’un autre site Internet WordPress, il faut rédiger une portion de code sur une page HTML, entre les balises <body> … </body>. Cette page doit être capable de travailler en PHP. Dans notre exemple, elle porte le nom « test-wp-rest-api.php ». La requête JSON détaillée précédemment permet de connaître le nom du champ qui sera retourné (guid, title, link, content, etc.). La portion de code se compose d’un script PHP, qui contient les informations, et d’une portion en HTML, qui retourne les données lues via PHP :

<!--?php</codesnippet-->
$url = 'https://www.meineseite.de/wp-json/wp/v2/posts/6576'; // Chemin de la requête JSON avec ID
$data = file_get_contents($url); // Indiquer le contenu dans une variable
$mydata = json_decode($data, true); // Décoder JSON
?>
<h1>PHP : lire une publication avec l’API REST de WordPress</h1> // Titre
<div id="mydata"></div>
<!--?php echo $mydata['content']['rendered']; ?--> // Transmission du « content » avec l’ID 6576

Lire la publication avec jQuery

Une alternative pour lire le contenu consiste à utiliser jQuery. Pour ce faire, cette bibliothèque doit être intégrée au header de la page. Enfin, l’ensemble fonctionne aussi avec l’extension de fichier .html.


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> // Intégrer jQuery
<script>// Portion de code pour lire les données de la publication</codesnippet></script>
$(function() {
$.getJSON('https://mtmedia.de/wp-json/wp/v2/posts/6576', function(alldata) {
var contentElm = alldata.content.rendered
$(contentElm).appendTo("#mydata");
});
});
<h1>jQuery : lire une publication avec l’API REST de WordPress </h1> // Titre
<div id="mydata"> Transmission du « content » de la publication avec l’ID 6576</div>

Le résultat qui s’affiche dans le navigateur est identique à celui de la requête programmée avec PHP. Avec jQuery, on obtient le contenu sans variable supplémentaire dans le container DIV « mydata ».

Que se passe-t-il avec les sites utilisant un autre CMS ?

L’API qui nous concerne s’appelle WordPress REST API car elle fait partie intégrante de la programmation WordPress. Ainsi, cette interface est uniquement utilisable pour interroger des pages créées avec WordPress.

La tentative de requête retourne une erreur 404. Il existe d’autres solutions pour interroger la base de données du CMS de ce type de sites Internet.

Bloquer l’accès à l’API REST de WordPress

Tout le monde n’a pas envie de rendre facilement accessibles et exploitables les informations de son site Internet. Pour interdire l’utilisation des données, il existe une barrière, que l’on active dans le back-office de WordPress.

Le plugin « Disable WP REST API » de la bibliothèque WordPress doit être activé après son installation (comme tout autre plugin) pour interdire l’accès aux personnes non autorisées. Aucun paramétrage supplémentaire n’est nécessaire.

Le code de statut « 401 » (Unauthorized) signifie que le serveur a refusé les requêtes HTTP car l’utilisateur ne dispose pas d’une authentification valide. Contrairement au code « 403 », il est tout de même possible de s’identifier.

De nombreux sites Internet sont protégés de cette façon pour empêcher automatiquement le vol de contenu. S’autoriser l’utilisation de contenus extérieurs à partir du site Internet d’un autre fournisseur n’est pas qu’une question de politesse, mais aussi de respect du droit d’auteur. Pour tester son propre site Internet, il suffit de désactiver le plugin. Le contenu de la base de données sera de nouveau interrogeable comme expliqué ci-dessus. Les données du plugin ne peuvent pas être perdues.