Pour certaines tâches, WordPress s’appelle lui-même : c’est la requête de bouclage, dont se servent les tâches planifiées et l’éditeur de fichiers. L’API REST est le guichet par lequel l’éditeur de blocs et de nombreuses extensions dialoguent avec le serveur. Quand ces appels internes échouent, le site s’affiche toujours, mais certaines fonctions se dérèglent.
Pourquoi cette erreur apparaît
- Une extension ouvre une session PHP sans la refermer, ce qui fait expirer les appels internes (cURL error 28).
- Un pare-feu, une extension de sécurité ou ModSecurity bloque les requêtes que le serveur s’adresse à lui-même (réponse 401 ou 403).
- Le site est protégé par un mot de passe au niveau du serveur, ou une extension désactive l’API REST.
- Vu depuis le serveur lui-même, le domaine ne pointe pas au bon endroit, après une migration ou derrière un CDN mal réglé.
- Le serveur est trop lent pour répondre dans le délai de dix secondes prévu par le test.
Comment corriger le problème
Lire le code d’erreur dans la Santé du site
Ouvrez Outils > Santé du site et dépliez l’alerte. La ligne d’erreur donne l’indice : cURL error 28 signale un délai dépassé, 401 une protection par mot de passe, 403 un blocage de sécurité, 404 un souci de permaliens.
Tester sans les extensions
L’extension officielle Health Check & Troubleshooting propose un mode de dépannage qui désactive les extensions pour votre seule session, sans rien changer pour les visiteurs. Relancez les tests, puis réactivez les extensions une à une.
Vérifier les protections du serveur
Si un mot de passe de serveur (htpasswd) protège le site ou l’administration, ou si votre extension de sécurité filtre l’API REST, ajoutez une exception pour l’adresse IP du serveur. Le support de l’hébergeur peut confirmer si ModSecurity bloque ces appels.
Traquer une session PHP restée ouverte
Le même rapport signale parfois une session PHP active. L’extension qui l’ouvre doit être mise à jour ou remplacée, car elle retient les appels internes jusqu’au délai maximal.
Tester l’appel depuis le serveur
En SSH, vérifiez que le serveur joint son propre site : la réponse attendue est 200. Une erreur de résolution ou de connexion oriente vers le DNS ou vers le fichier /etc/hosts du serveur.
curl -sS -o /dev/null -w "%{http_code}n" https://www.example.fr/wp-json/
wp eval 'echo wp_remote_retrieve_response_code( wp_remote_get( rest_url() ) );'
Ne désactivez ni l’API REST ni votre pare-feu pour faire disparaître l’alerte : ajoutez des exceptions ciblées pour les appels du serveur vers lui-même.
Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.
Ouvrir le décodeur