Le système de gestion de contenu (CMS pour Content Ma­na­ge­ment System) WordPress jouit d’une grande po­pu­la­rité. Comparé à d’autres CMS, il permet de créer assez fa­ci­le­ment des sites Internet répondant à dif­fé­rents besoins. Avec de solides con­nais­sances d’Office, soigner sa présence sur le Web à l’aide d’un rédacteur ne pose aucun problème. Par ailleurs, les ad­mi­nis­tra­teurs Web ont accès à plus de 55 000 plugins capables d’exécuter les nom­breuses 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 con­fi­gu­ra­tion facile, de la sécurité intégrée et de la pla­te­forme optimisée pour votre hé­ber­ge­ment WordPress.

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

Le nom WordPress REST API désigne une interface per­met­tant de com­mu­ni­quer avec la base de données utilisée par WordPress. L’abré­via­tion API signifie « Ap­pli­ca­tion Pro­gram­ming Interface », en français « Interface de pro­gram­ma­tion d’ap­pli­ca­tion ». Elle permet l’échange entre dif­fé­rents logiciels en res­pec­tant une logique pré­dé­fi­nie, à l’instar de deux personnes qui peuvent discuter et se com­prendre uni­que­ment en parlant une langue commune. Retrouvez des in­for­ma­tions plus dé­tail­lées sur notre article « API : ce qu’il faut savoir sur les in­ter­faces de pro­gram­ma­tion ».

L’abré­via­tion REST signifie « Re­pre­sen­ta­tio­nal State Transfer ». Il s’agit des principes de l’échange in­for­ma­tique tels que définis en 1994 par l’in­for­ma­ti­cien américain Roy Fielding :

  • Unité : les URL pour accéder aux res­sources doivent être uniques, co­hé­rentes et dis­po­nibles par le biais d’une méthode commune, comme GET.
  • Sé­pa­ra­tion client/serveur : si la tech­no­lo­gie évolue côté serveur (p. ex. WordPress), l’ap­pli­ca­tion côté client (p. ex. une ap­pli­ca­tion) 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’en­re­gistre pas les requêtes.
  • Peut être mis en cache : assure une rapidité et une con­for­mité ex­cel­lentes côté serveur et côté client.
  • Système à couches : l’accès est possible sur dif­fé­rentes couches (layer).
  • Code on Demand (optionnel) : le code pour l’exécution locale est transmis au client uni­que­ment en cas de besoin.

Depuis la version 4.7 de WordPress, ces exigences sont intégrées dans le Core, la pro­gram­ma­tion centrale du système de gestion de contenu. Au­pa­ra­vant, 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 pos­si­bi­li­tés de com­mu­ni­ca­tion avec d’autres ap­pli­ca­tions (également des ap­pli­ca­tions Web).

Hé­ber­ge­ment pour Managed WordPress
Créez votre site avec l'IA, nous gérons le reste
  • Fonctions d'IA faciles à utiliser, quel que soit votre niveau de com­pé­tence
  • Nombreux thèmes et plugins pour une per­son­na­li­sa­tion complète
  • Mise à jour sans efforts et moins d'ad­mi­nis­tra­tion

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

L’interface permet de com­mu­ni­quer di­rec­te­ment avec la base de données utilisée par WordPress, où toutes les in­for­ma­tions 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 com­mu­ni­quer qui au­to­ri­sent 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’in­ter­pré­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, choi­sis­sez « Aller à » > « Fonc­tion­na­li­tés » ; dans la fenêtre qui s’ouvre, double-cliquer sur « Terminal »
  • Dans le « Dock », cliquer sur « Pro­grammes » > « Fonc­tion­na­li­tés » > « Terminal »

Entrez la commande suivante dans l’invite clig­no­tante 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 au­to­ri­sé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 in­for­ma­tions 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 na­vi­ga­teur

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

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

JSON est l’abré­via­tion de « Ja­vaS­cript Object Notation », un format texte pour l’échange de données. Il est facile à apprendre et à lire et po­ly­va­lent à l’uti­li­sa­tion, comme le montrent, entre autres, notre tutoriel JSON-LD d’après Schema.org et notre article sur les requêtes in­ter­do­maines avec JSONP.

Les in­for­ma­tions in­ter­ro­gées vous sont pré­sen­tées comme sur un livre ouvert. Pour consulter plus en détails le contenu du site, l’API REST de WordPress permet une in­ter­ro­ga­tion à l’aide d’un grand nombre de commandes pour retourner des com­po­santes précises de la base de données. On peut ainsi par exemple in­ter­ro­ger les posts (pu­bli­ca­tions) avec :

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

Vous obtenez un aperçu de toutes les pu­bli­ca­tions présentes dans la base de données, y compris les éven­tuelles versions an­té­rieures, les liens, les contenus mé­dia­tiques, les auteurs et bien plus. Chaque pu­bli­ca­tion est iden­ti­fiée de manière univoque dans la base de données WordPress par son ID :

Cette fois, pour consulter une pu­bli­ca­tion précise dans le na­vi­ga­teur, 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 pu­bli­ca­tions, on peut re­cher­cher les pages (pages), les contenus mé­dia­tiques (media), les auteurs (author) et bien plus. Le guide de l’API REST de WordPress et l’ensemble de ses commandes est dis­po­nible sur les pages dé­ve­lop­peurs 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 re­cueil­lir les ac­tua­li­tés d’autres sites Internet. Cette opération fonc­tionne avec l’API REST de WordPress uni­que­ment si les sites déjà existants sont pro­gram­més sous WordPress. Une requête est envoyée sur les serveurs choisis pour obtenir les contenus et leurs ID.

Plusieurs options de pro­gram­ma­tion per­met­tent de retourner toujours les contenus les plus récents, notamment avec le script PHP ou la bi­blio­thèque jQuery de Ja­vaS­cript. Découvrez ces méthodes à l’aide de deux exemples de code simple pour l’API de WordPress.

Lire une pu­bli­ca­tion avec PHP

Pour lire une pu­bli­ca­tion 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 tra­vail­ler en PHP. Dans notre exemple, elle porte le nom « test-wp-rest-api.php ». La requête JSON détaillée pré­cé­dem­ment 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 in­for­ma­tions, 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 pu­bli­ca­tion avec jQuery

Une al­ter­na­tive pour lire le contenu consiste à utiliser jQuery. Pour ce faire, cette bi­blio­thèque doit être intégrée au header de la page. Enfin, l’ensemble fonc­tionne 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 na­vi­ga­teur est identique à celui de la requête pro­gram­mée avec PHP. Avec jQuery, on obtient le contenu sans variable sup­plé­men­taire 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 in­té­grante de la pro­gram­ma­tion WordPress. Ainsi, cette interface est uni­que­ment uti­li­sable pour in­ter­ro­ger des pages créées avec WordPress.

La tentative de requête retourne une erreur 404. Il existe d’autres solutions pour in­ter­ro­ger 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 fa­ci­le­ment ac­ces­sibles et ex­ploi­tables les in­for­ma­tions de son site Internet. Pour interdire l’uti­li­sa­tion 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 bi­blio­thèque WordPress doit être activé après son ins­tal­la­tion (comme tout autre plugin) pour interdire l’accès aux personnes non au­to­ri­sées. Aucun pa­ra­mé­trage sup­plé­men­taire n’est né­ces­saire.

Le code de statut « 401 » (Unau­tho­ri­zed) signifie que le serveur a refusé les requêtes HTTP car l’uti­li­sa­teur ne dispose pas d’une au­then­ti­fi­ca­tion valide. Con­trai­re­ment au code « 403 », il est tout de même possible de s’iden­ti­fier.

De nombreux sites Internet sont protégés de cette façon pour empêcher au­to­ma­ti­que­ment le vol de contenu. S’autoriser l’uti­li­sa­tion de contenus ex­té­rieurs à partir du site Internet d’un autre four­nis­seur 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é­sac­ti­ver le plugin. Le contenu de la base de données sera de nouveau in­ter­ro­geable comme expliqué ci-dessus. Les données du plugin ne peuvent pas être perdues.

Aller au menu principal