Contexte
Le site WordPress fonctionnait côté visiteurs, mais le back-office devenait quasi inutilisable: chargement interminable, pages admin qui se figent, et roue qui tourne en continu. Le problème s’est aggravé après une mise à jour de plugin, avec un impact direct sur la gestion de contenu et l’exploitation.
Symptômes observés
- Accès
/wp-admintrès lent, parfois bloqué. - Éditeur de pages qui ne charge pas complètement.
- Requêtes répétées vers
admin-ajax.php(boucle). - Erreurs JavaScript dans la console navigateur.
Objectifs du dépannage
- Rétablir un back-office utilisable rapidement.
- Identifier le plugin ou la fonctionnalité à l’origine des requêtes en boucle.
- Réduire la charge admin-ajax et corriger les erreurs JS.
- Stabiliser pour éviter le retour du problème après mises à jour.
Diagnostic (approche)
- Analyse DevTools navigateur: onglet Network, filtre
admin-ajax, fréquence, payload. - Console JS: repérage d’une erreur répétée (souvent un script tiers ou un plugin admin).
- Isolation via Health Check (mode sans conflit) pour ne pas impacter les visiteurs.
- Mesure des requêtes et hooks via Query Monitor.
- Contrôle cache et CDN: s’assurer que l’admin n’est jamais mis en cache.
Cause identifiée
Un plugin ajoutait un module admin (dashboard widget + vérification distante) qui déclenchait des appels AJAX en boucle, amplifiés par une erreur JavaScript. Dans certaines conditions (session longue, navigateur, extension), la boucle devenait quasi infinie.
Correctifs appliqués
1) Retour rapide en état stable
- Désactivation du module concerné (ou du plugin) via WP-CLI si l’admin était trop lente.
- Nettoyage cache navigateur et purge cache applicatif (sans toucher l’admin).
2) Correction durable
- Mise à jour du plugin vers une version corrigée, ou remplacement par alternative stable.
- Désactivation des widgets admin non essentiels.
- Réduction des appels externes en admin (désactivation de modules de télémétrie inutiles).
3) Optimisation et contrôle
- Vérification des rôles et permissions: limiter les plugins admin aux rôles nécessaires.
- Contrôle des erreurs JS après correction (console vide sur pages clés).
- Test des écrans principaux: tableau de bord, pages, médias, plugins, éditeur.
Exemple technique : repérer une boucle admin-ajax (navigateur)
En pratique, c’est souvent la méthode la plus rapide pour isoler la source.
DevTools > Network
Filtre: admin-ajax
Observer:
- nombre d'appels/minute
- action=... dans la requête
- réponse (200/4xx/5xx) + contenu
Exemple technique : désactiver un plugin sans admin (WP-CLI)
Indispensable quand le back-office est inutilisable.
wp plugin list
wp plugin deactivate nom-du-plugin
Exemple technique : blocage ciblé d’un widget admin (mu-plugin)
Option propre quand on veut désactiver un widget sans toucher aux visiteurs.
<?php
/**
* Plugin Name: CC - Désactivation widget admin (exemple)
*/
add_action('wp_dashboard_setup', function () {
remove_meta_box('dashboard_primary', 'dashboard', 'side');
});
Résultats
- Back-office redevenu fluide, sans blocage.
- Suppression de la boucle admin-ajax.
- Console JavaScript propre sur les écrans clés.
- Exploitation à nouveau possible (édition, médias, plugins).
Prévention mise en place
- Tester l’admin après mises à jour majeures, pas seulement le front.
- Limiter les plugins qui injectent des dashboards lourds.
- Garder Health Check pour isoler rapidement les conflits sans impacter les visiteurs.
- Surveiller les pics d’appels
admin-ajax.php(logs ou monitoring si disponible).
Points clés à retenir
- Un admin qui tourne en boucle pointe souvent une erreur JS + appels admin-ajax.
- Health Check permet d’isoler proprement sans casser le site public.
- Réduire les modules admin non essentiels améliore durablement l’expérience.