# Contrôleur REST

> Classe PHP qui regroupe la logique d'une ressource de l'API REST WordPress : lecture, création, modification et suppression, avec ses règles de permission.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/controleur-rest/

Multiplier les points de terminaison un par un devient vite difficile à maintenir dès qu'une ressource a besoin des quatre opérations classiques (lister, lire, créer, modifier). WordPress propose donc une structure orientée objet pour organiser ce travail de façon cohérente, celle que le cœur utilise lui-même pour les articles ou les utilisateurs.

## Structure d'un contrôleur

Un contrôleur personnalisé étend généralement la classe abstraite `WP_REST_Controller` et implémente des méthodes comme `get_items()`, `get_item()`, `create_item()` ou leurs équivalents de vérification des permissions, `get_items_permissions_check()` :

```
class Mon_Controleur extends WP_REST_Controller {
  public function register_routes() {
    register_rest_route( 'mon-app/v1', '/taches', array(
      'methods'  => 'GET',
      'callback' => array( $this, 'get_items' ),
      'permission_callback' => array( $this, 'get_items_permissions_check' ),
    ) );
  }
}
```

La méthode `register_routes()` est ensuite appelée sur le hook `rest_api_init`.

## Bon à savoir

- Utiliser `WP_REST_Controller` n'est pas obligatoire pour une route simple déclarée directement avec `register_rest_route()`, mais devient utile dès que la ressource gère plusieurs opérations et un schéma de données.
- Le schéma renvoyé par `get_item_schema()` sert aussi à générer automatiquement la documentation visible via l'option `?_fields` ou les outils d'introspection de l'API.
- Un contrôleur bien conçu délègue la vérification des permissions à des méthodes séparées plutôt que de mélanger cette logique avec le traitement de la donnée, ce qui facilite les tests et la relecture du code.
