API REST WordPress : guide complet pour développeurs (2026)
L'API REST WordPress permet d'interagir avec votre site via des requêtes HTTP standard. Ce guide complet vous explique comment lire, créer et modifier du contenu WordPress via l'API REST, avec des exemples concrets en JavaScript et PHP.
L’API REST WordPress est intégrée au core depuis la version 4.7. Elle transforme votre WordPress en back-end headless que n’importe quelle application peut interroger — React, Next.js, une app mobile, un autre CMS. Voici comment en tirer le meilleur parti.
Comprendre l’architecture REST de WordPress
L’API REST WordPress expose vos données via des endpoints JSON accessibles à l’URL /wp-json/wp/v2/. Chaque type de contenu a son endpoint : /wp-json/wp/v2/posts pour les articles, /wp-json/wp/v2/pages pour les pages, /wp-json/wp/v2/media pour les médias. Les requêtes GET sont publiques par défaut ; les requêtes POST, PUT, DELETE nécessitent une authentification.
Lire du contenu via l’API REST
Une requête GET simple pour récupérer les 10 derniers articles :
fetch('https://votre-site.fr/wp-json/wp/v2/posts?per_page=10&_embed')
.then(res => res.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered, post.link);
});
});
Le paramètre _embed inclut les données liées (image mise en avant, auteur, catégories) en une seule requête, évitant les appels multiples.
Filtrer et paginer les résultats
L’API REST supporte de nombreux paramètres de filtrage :
?categories=5— filtrer par catégorie?search=wordpress— recherche plein texte?orderby=modified&order=desc— trier par date de modification?page=2&per_page=6— pagination?slug=mon-article— récupérer un article par son slug
La réponse inclut dans les headers le nombre total de résultats (X-WP-Total) et le nombre total de pages (X-WP-TotalPages), utiles pour construire une pagination côté client.
Authentification pour les opérations d’écriture
Pour créer ou modifier du contenu, WordPress propose plusieurs méthodes d’authentification. En développement local, l’authentification basique (base64 du login:password) suffit. En production, utilisez l’Application Passwords (intégré depuis WP 5.6) : générez un mot de passe d’application dans Utilisateurs → Votre profil.
const response = await fetch('https://votre-site.fr/wp-json/wp/v2/posts', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa('admin:xxxx xxxx xxxx xxxx xxxx xxxx')
},
body: JSON.stringify({
title: 'Mon nouvel article',
content: 'Contenu HTML...',
status: 'publish'
})
});
Créer des endpoints personnalisés
L’API REST est extensible. Dans functions.php, enregistrez vos propres routes :
add_action('rest_api_init', function() {
register_rest_route('monplugin/v1', '/stats', [
'methods' => 'GET',
'callback' => 'monplugin_get_stats',
'permission_callback' => '__return_true',
]);
});
function monplugin_get_stats($request) {
return rest_ensure_response([
'total_posts' => wp_count_posts()->publish,
'date' => current_time('c'),
]);
}
Sécuriser l’API REST
Par défaut, l’API REST WordPress est publique pour la lecture. Si vous n’avez pas besoin d’exposer votre contenu à des applications externes, vous pouvez restreindre l’accès aux utilisateurs authentifiés :
add_filter('rest_authentication_errors', function($result) {
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'Authentification requise.', ['status' => 401]);
}
return $result;
});
Attention : cela cassera les fonctions WordPress qui utilisent l’API REST en front (bloc Gutenberg, etc.).
Performance de l’API REST
Les requêtes API REST passent par PHP et la base de données à chaque appel. Mettez en cache les réponses avec Transients API ou un cache objet (Redis) pour les endpoints fréquemment appelés. Cloudflare peut aussi mettre en cache les endpoints GET publics avec des règles de page personnalisées.