« Creation of dynamic property is deprecated » : l’avis PHP 8.2 sur WordPress

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

AvertissementCompatibilité PHP 8
Le message affiché
Deprecated: Creation of dynamic property Mon_Extension_Admin::$settings is deprecated
Autres formulations du même message 1
  • PHP Deprecated: Creation of dynamic property Mon_Extension_Admin::$settings is deprecated in /home/monsite/public_html/wp-content/plugins/mon-extension/admin/class-admin.php on line 42

PHP 8.2 déconseille d’ajouter à un objet une propriété que sa classe n’a pas déclarée. Le code fonctionne toujours : c’est un avis de dépréciation (Deprecated), pas une erreur. Il prévient qu’une future version majeure de PHP refusera cette pratique, et que le thème ou l’extension cité devra être adapté d’ici là.

Pourquoi cette erreur apparaît

  • Une extension ou un thème écrit avant PHP 8.2 range des informations dans ses objets sans les déclarer.
  • L’hébergement est passé à PHP 8.2 ou à une version plus récente, et le code n’a pas encore suivi.
  • Le mode débogage de WordPress est activé, ce qui rend visibles les avis Deprecated, masqués sinon.

Comment corriger le problème

Faire la différence entre un avis et une panne

Deprecated signifie « déconseillé ». Si votre site fonctionne normalement, aucune donnée n’est menacée et aucune fonction n’est cassée par cet avis : vous pouvez le traiter sans précipitation.

Chercher une mise à jour

Les versions récentes déclarent souvent leurs propriétés. Mettez à jour l’extension ou le thème qui figure dans le chemin du message, puis rechargez la page pour vérifier que l’avis a disparu.

Couper l’affichage des avis en production

Quand WP_DEBUG vaut false, WordPress n’affiche plus les avis Deprecated. S’ils apparaissent sur votre site en ligne, ouvrez wp-config.php : le mode débogage y a sans doute été laissé actif après une intervention.

define( 'WP_DEBUG', false );

Prévenir l’éditeur

Si aucune mise à jour ne règle l’avis, signalez-le au support de l’extension ou du thème en copiant le message complet, chemin et numéro de ligne compris : la correction est simple pour qui connaît le code.

Déclarer la propriété dans la classe

Pour votre propre code, déclarez la propriété en tête de classe. Si la classe doit vraiment accepter des propriétés libres, l’attribut #[AllowDynamicProperties] lève l’avis, mais c’est une solution d’attente. Les objets stdClass et les classes qui gèrent __set() ne sont pas concernés.

class Mon_Extension_Admin {

	// Propriété déclarée : plus d'avis
	public $settings = array();

	public function __construct() {
		$this->settings = get_option( 'mon_extension_settings', array() );
	}
}

Ne modifiez pas les fichiers d’une extension tierce pour faire taire l’avis, car la prochaine mise à jour effacerait votre retouche ; sauvegardez votre propre code avant de le corriger.

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