rest_pre_dispatch
Définition : rest_pre_dispatch est un filtre WordPress exécuté avant le dispatch normal d’une requête REST. Il peut fournir une réponse anticipée ou laisser le serveur continuer son traitement habituel.
Comprendre et utiliser
À quoi sert cette notion ?
Il sert aux scénarios avancés d’interception, de tests ou de court-circuit contrôlé d’une requête. Son usage doit rester ciblé car il intervient avant la callback d’endpoint.
Fonctionnement technique
La valeur filtrée est normalement null lorsque le dispatch doit continuer. Une réponse alternative ou un WP_Error peut modifier le parcours d’exécution.
Dans quel contexte l’utiliser ?
Un système de test instrumente seulement la route interne d’une extension pour mesurer les temps de traitement sans modifier les autres endpoints.
Étude de cas : application professionnelle
Un filtre global avant dispatch peut sembler pratique pour ajouter une politique commune, mais sa portée est très large. Commencer par observer une seule route de test et laisser le résultat inchangé. Ajouter ensuite un scénario d’échec simulé dans un environnement isolé pour comprendre les conséquences d’un retour anticipé. Vérifier que les routes du Core continuent de répondre normalement. Cette approche montre pourquoi un besoin limité à un endpoint doit généralement être traité dans son contrôleur plutôt qu’en modifiant tout le pipeline REST. Les permissions natives ne doivent pas être neutralisées.
Exemple technique commenté
Cet extrait est destiné à un fichier PHP chargé par WordPress, idéalement dans un plugin local de test. Il ne doit pas être placé dans l'éditeur de contenu. Avant exécution, vérifier que les objets et variables mentionnés existent dans le contexte et que les permissions nécessaires sont définies.
<?php
add_filter( 'rest_pre_dispatch', function ( $result, $server, $request ) {
if ( '/atoolpha/v1/demo' !== $request->get_route() ) {
return $result;
}
// Ne pas interrompre le dispatch normal.
return $result;
}, 10, 3 );
Décryptage du code et résultat attendu
Le filtre vérifie strictement le chemin et renvoie le résultat initial. Il montre l’emplacement d’intervention sans changer la réponse ni les permissions.
Exercice guidé pour vérifier la notion
Instrumenter une route fictive et vérifier qu’une route du Core reste inchangée.
Précautions et limites
Court-circuiter des routes sensibles à cet endroit peut contourner des étapes de sécurité si le comportement n’est pas soigneusement conçu et testé.
À ne pas confondre
rest_pre_dispatch intervient avant le dispatch ; rest_request_before_callbacks intervient plus tard, une fois la route résolue.
Diagnostic avancé
En cas de réponse prématurée, inspecter les filtres rest_pre_dispatch qui renvoient un objet au lieu de null.
Choix d’architecture et déploiement
Privilégier un hook attaché à un endpoint précis lorsque possible ; réserver le pré-dispatch global aux besoins transverses explicitement justifiés.
