Table des matières:
Comprendre l’erreur ‘Trying to get property of non-object’
Cette erreur fatale survient lorsque PHP tente d’accéder à une propriété d’un objet qui n’existe pas. En clair, le code attend un objet, mais reçoit null ou une valeur non-objet. Résultat : le site affiche une page blanche ou un message d’erreur.
Pourquoi cette erreur apparaît-elle sur WordPress ?
WordPress utilise massivement des objets (WP_Query, WP_Post, etc.). Si une fonction retourne null au lieu d’un objet, toute tentative d’accès à ses propriétés provoque l’erreur. Exemple typique : $post->ID alors que $post est null.
Les causes fréquentes
- Thème ou plugin obsolète : code non adapté à la version actuelle de WordPress ou de PHP.
- Conflit entre plugins : deux extensions modifient le même objet de manière incompatible.
- Boucle WordPress incorrecte : utilisation de
the_post()sans vérification préalable. - Requête personnalisée mal gérée :
WP_Queryqui retourne 0 article. - Données manquantes en base : un champ personnalisé supprimé ou une taxonomie vide.
Comment diagnostiquer l’erreur
Avant de corriger, il faut identifier le fichier et la ligne incriminés. Activez le mode débogage de WordPress.
Activer le débogage
Ajoutez ces lignes dans wp-config.php :
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
Consultez ensuite /wp-content/debug.log. L’erreur y sera détaillée avec le chemin du fichier et le numéro de ligne.
Solutions pratiques étape par étape
1. Vérifier les mises à jour
Mettez à jour votre thème, vos plugins et WordPress lui-même. Les développeurs corrigent souvent ce type d’erreur dans les nouvelles versions.
2. Désactiver les plugins un par un
Si l’erreur disparaît après désactivation d’un plugin, c’est le coupable. Réactivez les autres progressivement.
3. Passer à un thème par défaut
Activez temporairement un thème Twenty Twenty-Four. Si l’erreur disparaît, votre thème est en cause.
4. Corriger le code défaillant
Repérez la ligne d’erreur dans le fichier identifié. Ajoutez une vérification de type avant d’accéder aux propriétés :
if ( $objet instanceof WP_Post ) {
echo $objet->post_title;
} else {
// Gérer le cas où l'objet n'existe pas
}
5. Sécuriser les boucles personnalisées
Avant d’utiliser have_posts(), vérifiez que la requête a retourné des articles :
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// affichage
}
wp_reset_postdata();
}
Tableau récapitulatif des causes et solutions
| Cause | Solution rapide | Solution durable |
|---|---|---|
| Plugin obsolète | Désactiver le plugin | Mettre à jour ou remplacer |
| Thème non conforme | Passer à un thème par défaut | Corriger le code du thème |
| Boucle sans vérification | Ajouter if ( have_posts() ) |
Refactorer le code |
| Données manquantes | Vérifier la base de données | Ajouter des valeurs par défaut |
Erreurs à éviter
- Modifier directement les fichiers sans sauvegarde : utilisez un thème enfant.
- Ignorer les avertissements PHP : activez toujours le débogage en développement.
- Supposer que l’objet existe : vérifiez systématiquement avec
isset()ouinstanceof.
Quand faire appel à un développeur ?
Si l’erreur persiste après ces étapes, ou si vous n’êtes pas à l’aise avec la modification de code, contactez un professionnel. Une erreur mal corrigée peut casser d’autres fonctionnalités.
FAQ – Questions fréquentes
L’erreur ‘Trying to get property of non-object’ est-elle grave ?
Oui, car elle bloque l’affichage de la page concernée. Mais elle est généralement facile à corriger si on identifie la source.
Puis-je corriger sans coder ?
Parfois, en désactivant des plugins ou en changeant de thème. Sinon, une petite modification de code est nécessaire.
Le débogage ralentit-il mon site ?
Non, il écrit simplement dans un fichier. Mais ne le laissez pas activé en production.
Comment éviter cette erreur à l’avenir ?
Utilisez un thème et des plugins de qualité, maintenez tout à jour, et testez les mises à jour sur un environnement de staging.
Que faire si je ne trouve pas le fichier incriminé ?
Le fichier debug.log vous donne le chemin exact. Utilisez un FTP ou le gestionnaire de fichiers de votre hébergement.
Cette erreur peut-elle venir de l’hébergement ?
Rarement. Elle est presque toujours due à un code défaillant. Vérifiez d’abord les plugins et le thème.
Recommandations finales
Pour résoudre l’erreur ‘Trying to get property of non-object’ sur WordPress, suivez ces étapes : activez le débogage, identifiez le fichier, vérifiez les mises à jour, désactivez les plugins un par un, testez un thème par défaut, et corrigez le code en ajoutant des vérifications. Avec méthode, vous retrouverez un site fonctionnel.
Photo by Jahanzeb Ahsan on Unsplash

J’ai ajouté les lignes de débogage dans wp-config.php, mais le fichier debug.log est vide. Pourtant j’ai l’erreur sur le site. Une idée ?
Vérifiez que les lignes sont bien placées avant le « That’s all, stop editing! ». Aussi, assurez-vous que WP_DEBUG_LOG est défini sur true et que le dossier wp-content est accessible en écriture. Parfois, un cache peut aussi empêcher l’affichage.
Attention à ne pas oublier wp_reset_postdata() après une boucle personnalisée, ça m’a déjà joué des tours.
Exact, c’est une bonne remarque. Sans wp_reset_postdata(), la variable globale $post peut rester modifiée, ce qui entraîne des erreurs ailleurs sur la page.
J’ai désactivé tous les plugins mais l’erreur persiste. Que faire ensuite ?
Essayez de passer à un thème par défaut (Twenty Twenty-Four par exemple). Si l’erreur disparaît, c’est que votre thème est en cause. Sinon, vérifiez le fichier wp-config.php et le fichier functions.php du thème parent.
Merci pour le tableau récapitulatif, très pratique ! Pour la solution « Ajouter des valeurs par défaut », vous pourriez donner un exemple concret ?
Bien sûr. Par exemple, si vous utilisez get_post_meta() et que la valeur peut être vide, faites : $meta = get_post_meta($post->ID, ‘mon_champ’, true); if (!empty($meta)) { … }. Cela évite d’appeler des méthodes sur null.
Merci pour cet article très clair. J’ai activé le débogage et trouvé l’erreur dans un fichier de mon thème. J’ai ajouté la vérification instanceof et tout fonctionne maintenant.
Super, ravi d’apprendre que l’astuce a fonctionné ! La vérification instanceof est en effet une bonne pratique pour éviter ce genre d’erreur.
Je suis novice, j’ai peur de casser mon site en modifiant le code. Y a-t-il une méthode plus sûre ?
Vous pouvez utiliser un plugin comme « Code Snippets » pour ajouter des correctifs sans toucher aux fichiers du thème. Sinon, faites toujours une sauvegarde complète avant toute modification. Et n’hésitez pas à tester sur un site de staging.
Est-ce que cette erreur peut être causée par une mauvaise manipulation de WP_Query dans un shortcode ?
Absolument. Si votre shortcode exécute une requête personnalisée sans vérifier si des articles existent, vous pouvez obtenir cette erreur. Assurez-vous d’utiliser have_posts() avant d’accéder aux propriétés de l’objet article.
Chez moi, l’erreur apparaît seulement sur la page d’accueil, pas sur les articles. Est-ce que ça pourrait être lié à la boucle principale ?
Oui, c’est possible. Vérifiez que votre page d’accueil utilise bien have_posts() avant d’appeler the_post(). Parfois, un thème personnalisé oublie cette vérification.