Table des matières:
Comprendre l’erreur ‘Non-static method should not be called statically’
Cette erreur survient lorsque du code PHP tente d’appeler une méthode non statique comme si elle était statique. En PHP, une méthode déclarée sans le mot-clé static ne peut être invoquée qu’à partir d’une instance de classe. L’appel via MaClasse::maMethode() au lieu de $objet->maMethode() déclenche une alerte, et depuis PHP 7.0, une notice E_DEPRECATED ou une erreur fatale selon la configuration.
Sur WordPress, ce problème apparaît souvent après une mise à jour de PHP, de plugins ou du thème. Il peut rendre le site inaccessible, afficher un écran blanc ou une erreur directe.
Pourquoi cette erreur se produit-elle sur WordPress ?
Mise à jour de PHP vers une version récente
PHP 7.0 et supérieurs sont plus stricts sur la déclaration des méthodes statiques. Si votre thème ou plugin utilise du code obsolète, l’erreur apparaît.
Code de plugin ou thème non conforme
Certains développeurs oublient le mot-clé static dans la déclaration de méthode, ou utilisent l’opérateur de résolution de portée :: sur une méthode non statique.
Conflit entre plugins
Deux plugins peuvent interagir et appeler une méthode de manière incorrecte, surtout si l’un étend l’autre.
Comment identifier la source du problème ?
Avant de corriger, il faut localiser le fichier et la ligne incriminés. Voici les étapes :
- Activer le débogage WordPress : dans
wp-config.php, ajoutezdefine('WP_DEBUG', true);etdefine('WP_DEBUG_DISPLAY', false);pour écrire les erreurs dans un fichier log. - Consulter le fichier debug.log : il se trouve dans
/wp-content/debug.loget contient la trace exacte. - Vérifier les logs du serveur : via cPanel ou votre hébergeur, accédez aux logs d’erreur PHP.
Une fois le fichier et la ligne identifiés, vous saurez quel plugin ou thème est en cause.
Solutions pratiques pour corriger l’erreur
Solution 1 : Mettre à jour le plugin ou le thème
La cause la plus fréquente est un code obsolète. Rendez-vous dans le tableau de bord WordPress et mettez à jour tous les plugins et thèmes. Si l’erreur disparaît, le problème est réglé.
Solution 2 : Modifier le code PHP (si vous êtes développeur)
Si la mise à jour n’existe pas, vous pouvez corriger manuellement :
- Ouvrez le fichier concerné via FTP ou le gestionnaire de fichiers.
- Repérez la méthode appelée statiquement. Par exemple :
MaClasse::maMethode(). - Si la méthode n’est pas statique, deux options :
- Déclarez la méthode comme statique en ajoutant
staticdevantfunction:public static function maMethode(). - Ou instanciez la classe avant d’appeler :
$objet = new MaClasse(); $objet->maMethode();.
- Déclarez la méthode comme statique en ajoutant
Attention : modifier un plugin directement entraînera la perte des modifications lors de la prochaine mise à jour. Préférez créer un plugin enfant ou contacter le développeur.
Solution 3 : Désactiver temporairement les plugins
Si vous ne pouvez pas identifier le coupable, désactivez tous les plugins. Si l’erreur disparaît, réactivez-les un par un pour trouver le fautif. Ensuite, mettez-le à jour ou cherchez une alternative.
Solution 4 : Revenir à une version antérieure de PHP
Si aucune solution ne fonctionne, vous pouvez temporairement revenir à PHP 5.6 via votre hébergeur. Cependant, ce n’est pas recommandé pour la sécurité. Mieux vaut corriger le code.
Tableau récapitulatif des solutions
| Solution | Difficulté | Risque | Durabilité |
|---|---|---|---|
| Mise à jour du plugin/thème | Facile | Aucun | Permanente |
| Modification du code | Moyen | Perte à la mise à jour | Temporaire |
| Désactivation des plugins | Facile | Perte de fonctionnalités | Temporaire |
| Rétrogradation PHP | Moyen | Sécurité | Temporaire |
Erreurs à éviter lors de la correction
- Ne pas modifier les fichiers principaux de WordPress (wp-admin, wp-includes) – cela pourrait casser le site.
- Éviter de supprimer des lignes de code sans comprendre leur utilité.
- Ne pas ignorer l’erreur : même si le site semble fonctionner, l’erreur peut causer des ralentissements ou une vulnérabilité.
- Ne pas copier-coller du code sans vérifier : les espaces, points-virgules et accolades sont critiques en PHP.
Comment prévenir cette erreur à l’avenir ?
- Maintenez WordPress, vos plugins et thèmes à jour.
- Utilisez un environnement de staging pour tester les mises à jour majeures.
- Choisissez des plugins réputés et activement maintenus.
- Activez le débogage en développement pour détecter les erreurs tôt.
- Si vous développez, respectez les normes de codage WordPress et déclarez correctement les méthodes statiques.
FAQ – Questions fréquentes sur l’erreur ‘Non-static method’
1. Cette erreur peut-elle casser mon site WordPress ?
Oui, si l’erreur est fatale, le site affiche un écran blanc. Même une notice peut ralentir le site.
2. Dois-je modifier le fichier wp-config.php ?
Pour activer le débogage, oui. Mais pour corriger l’erreur, il faut modifier le fichier source du plugin ou thème.
3. Puis-je ignorer cette erreur si mon site fonctionne ?
Non, elle peut indiquer un problème de compatibilité qui s’aggravera avec les futures mises à jour.
4. Comment savoir si la méthode doit être statique ?
Analysez le code : si la méthode utilise $this, elle ne peut pas être statique. Sinon, vous pouvez la déclarer statique.
5. Que faire si je ne suis pas développeur ?
Contactez l’auteur du plugin ou un développeur WordPress. Vous pouvez aussi chercher une alternative au plugin.
6. Les mises à jour automatiques peuvent-elles résoudre ce problème ?
Parfois, oui. Mais si le plugin n’est plus maintenu, vous devrez agir manuellement.
Recommandations finales pour résoudre définitivement l’erreur
L’erreur ‘Non-static method should not be called statically’ est souvent le signe d’un code vieillissant. La meilleure approche est de mettre à jour les extensions, puis de corriger le code si nécessaire. Si vous gérez plusieurs sites, automatisez les mises à jour et utilisez un service de surveillance des erreurs. En cas de doute, faites appel à un professionnel. Un site propre et à jour est plus sécurisé et plus performant.
Photo by Annushka Ahuja on Pexels

Merci beaucoup ! J’ai résolu mon erreur en suivant la solution 1. Je n’avais pas pensé à vérifier les mises à jour de thème. Le problème venait d’un vieux thème que j’avais oublié de mettre à jour.
Ravi que cela ait fonctionné ! Les thèmes sont souvent négligés dans les mises à jour, mais ils peuvent causer ce type d’erreur. Pensez à tout mettre à jour régulièrement.
J’ai désactivé tous les plugins comme suggéré, l’erreur a disparu. Mais maintenant je dois les réactiver un par un ? Y a-t-il un moyen plus rapide de trouver lequel ?
Vous pouvez utiliser une méthode par dichotomie : réactivez la moitié des plugins, testez, puis l’autre moitié. Cela réduit le nombre d’étapes. Sinon, consultez le fichier debug.log avant désactivation : il indique souvent le fichier exact.
Merci pour cet article très clair ! J’ai eu cette erreur après avoir mis à jour PHP vers 7.4. J’ai suivi vos conseils et j’ai trouvé le plugin en cause dans le fichier debug.log. La mise à jour du plugin a résolu le problème.
Content que cela vous ait aidé ! La mise à jour de PHP est une cause fréquente, et le fichier debug.log est effectivement l’outil le plus simple pour identifier le coupable.
J’ai essayé la solution 2 (modifier le code) mais je ne suis pas sûr de bien comprendre : si je rends la méthode statique, est-ce que ça peut casser autre chose ?
Bonne question. Rendre une méthode statique peut effectivement causer des problèmes si cette méthode utilise $this ou dépend d’un état d’instance. Dans ce cas, il est préférable d’instancier la classe. Vérifiez le contenu de la méthode avant de modifier.
Attention : modifier directement un plugin comme indiqué dans la solution 2 n’est pas recommandé car les modifications seront perdues à la prochaine mise à jour. Il faudrait le mentionner plus clairement.
Vous avez tout à fait raison, c’est un point crucial. Nous avons mentionné cette mise en garde dans l’article, mais nous insistons : préférez un plugin enfant ou contactez le développeur. Merci de souligner l’importance de ce point.
Super guide ! Une question : est-ce que l’activation du mode débogage peut ralentir le site ?
L’activation de WP_DEBUG n’a pas d’impact significatif sur les performances en soi, mais écrire beaucoup d’erreurs dans le fichier log peut légèrement ralentir. Pour un site en production, mieux vaut l’activer temporairement et le désactiver après résolution.