BaliseTonSite

L'API REST WordPress

WordPress parle JSON. Apprends à l'écouter.

3.1Les endpoints natifs

WordPress expose automatiquement une tonne d'endpoints. Les plus utiles :

EndpointCe qu'il retourne
/wp-json/wp/v2/postsArticles de blog
/wp-json/wp/v2/pagesPages statiques
/wp-json/wp/v2/categoriesCatégories
/wp-json/wp/v2/tagsÉtiquettes
/wp-json/wp/v2/mediaImages et fichiers
/wp-json/wp/v2/usersUtilisateurs (public limité)
/wp-json/wp/v2/commentsCommentaires

3.2Anatomie d'une réponse

Quand tu appelles /wp-json/wp/v2/posts, tu reçois un tableau JSON. Chaque article ressemble à ça :

JSONjson
{
  "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.rendered et content.rendered contiennent du HTML déjà formaté par WordPress.
  • slug est l'identifiant URL-friendly de l'article. C'est lui que tu utiliseras dans tes routes Next.js.
  • featured_media est l'ID de l'image mise en avant. Il faut un second appel pour récupérer l'URL de l'image.
  • _links contient 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 :

Bashbash
# 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?_embed

3.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 :

Bashbash
http://mon-cms-headless.local/wp-json/wp/v2/posts?_fields=id,title,slug&per_page=3

Tu 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 :

Bashbash
# 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-8

Ces 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.

Verifie tes acquis

5 questions pour valider ce chapitre

1. Quel endpoint retourne la liste des articles WordPress ?

Valide et sauvegarde ce chapitre

Ne perds pas le fil de ton apprentissage. Chaque QCM terminé sauvegarde ton score. Crée ton profil gratuitement pour débloquer toutes les évaluations du site et retrouver tes résultats plus tard.

Commencer l'aventure
Déjà membre ?Connecte-toi