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_Controllern’est pas obligatoire pour une route simple déclarée directement avecregister_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?_fieldsou 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.