L'API REST WordPress
WordPress parle JSON. Apprends à l'écouter.
3.1Les endpoints natifs
WordPress expose automatiquement une tonne d'endpoints. Les plus utiles :
| Endpoint | Ce qu'il retourne |
|---|---|
/wp-json/wp/v2/posts | Articles de blog |
/wp-json/wp/v2/pages | Pages statiques |
/wp-json/wp/v2/categories | Catégories |
/wp-json/wp/v2/tags | Étiquettes |
/wp-json/wp/v2/media | Images et fichiers |
/wp-json/wp/v2/users | Utilisateurs (public limité) |
/wp-json/wp/v2/comments | Commentaires |
3.2Anatomie d'une réponse
Quand tu appelles /wp-json/wp/v2/posts, tu reçois un tableau JSON. Chaque article ressemble à ça :
{
"id": 42,
"date": "2025-03-15T10:30:00",
"slug": "mon-premier-article",
"status": "publish",
"title": {
"rendered": "Mon premier article headless"
},
"content": {
"rendered": "<p>Le contenu HTML de l'article...</p>"
},
"excerpt": {
"rendered": "<p>Un résumé automatique...</p>"
},
"featured_media": 98,
"categories": [3, 7],
"tags": [12],
"_links": {
"self": [{ "href": "/wp-json/wp/v2/posts/42" }],
"wp:featuredmedia": [{ "href": "/wp-json/wp/v2/media/98" }]
}
}Points importants à retenir :
title.renderedetcontent.renderedcontiennent du HTML déjà formaté par WordPress.slugest l'identifiant URL-friendly de l'article. C'est lui que tu utiliseras dans tes routes Next.js.featured_mediaest l'ID de l'image mise en avant. Il faut un second appel pour récupérer l'URL de l'image._linkscontient les relations vers d'autres ressources. C'est le principe HATEOAS de REST.
3.3Filtrer et trier les données
Tu ne veux pas toujours tout récupérer. Voici les paramètres les plus utiles :
# Pagination : 5 articles, page 2
/wp-json/wp/v2/posts?per_page=5&page=2
# Filtrer par catégorie (ID = 3)
/wp-json/wp/v2/posts?categories=3
# Chercher par mot-clé
/wp-json/wp/v2/posts?search=nextjs
# Trier par date (décroissant par défaut)
/wp-json/wp/v2/posts?orderby=date&order=asc
# Récupérer un article par son slug
/wp-json/wp/v2/posts?slug=mon-premier-article
# Limiter les champs retournés (performance !)
/wp-json/wp/v2/posts?_fields=id,title,slug,excerpt
# Inclure les médias dans la réponse (embed)
/wp-json/wp/v2/posts?_embed3.4Tester avec Postman ou le navigateur
Pour explorer l'API, tu as plusieurs options :
Navigateur
Colle l'URL dans la barre d'adresse. Simple et rapide pour les GET.
Limite : pas de POST/PUT/DELETE, pas de headers personnalisés.
Postman / Insomnia
Client API complet. Teste toutes les méthodes HTTP avec des headers et un body.
Idéal pour tester les endpoints authentifiés.
Essaie cette requête dans ton navigateur :
http://mon-cms-headless.local/wp-json/wp/v2/posts?_fields=id,title,slug&per_page=3Tu devrais obtenir un JSON léger avec seulement l'ID, le titre et le slug de tes 3 derniers articles.
3.5Les headers utiles
L'API REST WordPress envoie des headers utiles dans chaque réponse :
# Nombre total d'éléments (pour la pagination)
X-WP-Total: 47
# Nombre total de pages
X-WP-TotalPages: 10
# Type de contenu
Content-Type: application/json; charset=UTF-8Ces headers sont précieux pour construire une pagination côté Next.js. Tu sauras combien de pages il y a au total sans avoir à deviner.