Le code veut utiliser une méthode, c’est-à-dire une action rattachée à un objet (un produit, une commande, la connexion à la base), alors que la variable censée contenir cet objet est vide. Le mot qui suit « on » dit ce qu’elle contient à la place : null (rien), bool ou false (un échec), array ou string. PHP ne peut pas aller plus loin : la page s’arrête net, souvent sur l’écran d’erreur critique.
Pourquoi cette erreur apparaît
- Un modèle du thème, souvent une copie d’un fichier WooCommerce, utilise $product ou $post à un endroit où WordPress ne les a pas remplis.
- Une fonction qui devait renvoyer un objet a renvoyé false ou null : produit supprimé, commande introuvable, identifiant erroné.
- Du code personnalisé se sert de $wpdb sans la ligne global $wpdb, ou s’exécute avant que WordPress ait préparé l’objet.
- Une extension complémentaire suppose que l’extension principale (WooCommerce, Elementor…) est chargée et à jour, ce qui n’est plus le cas.
- Une mise à jour a changé ce que renvoie une fonction, et le code qui l’appelle ne vérifie pas le résultat.
Comment corriger le problème
Lire la méthode, ce qu’elle a reçu et le fichier
Dans « Call to a member function get_id() on null », get_id() est l’action demandée et null ce qui a été trouvé à la place de l’objet. Le chemin après « in » désigne le fichier fautif : wp-content/themes met en cause le thème, wp-content/plugins une extension. Des méthodes comme get_price() ou get_id() trahissent souvent un produit WooCommerce, get_results() ou get_row() la base de données.
Remettre le site en ligne
Si l’administration répond, désactivez l’extension citée dans le chemin. Sinon, renommez son dossier par FTP ou depuis le gestionnaire de fichiers de l’hébergeur. Pour un thème, renommez le dossier du thème actif : l’administration redevient accessible, et la page Apparence > Thèmes active un thème par défaut s’il en reste un d’installé. Le lien du mode de récupération, reçu par e-mail, ouvre aussi l’administration.
Mettre à jour le thème et ses modèles WooCommerce
Si le fichier fautif se trouve dans un dossier woocommerce de votre thème, c’est une copie de modèle qui date peut-être d’une ancienne version. Mettez à jour le thème, WooCommerce et ses modules ensemble, puis ouvrez WooCommerce > État > État du système : la rubrique des modèles signale les copies dépassées.
Suivre la pile d’appels dans le journal
Activez le journal de débogage, un fichier où WordPress note les erreurs, puis reproduisez le plantage. Sous « Stack trace », les lignes #0, #1… retracent le chemin parcouru par le code : la première qui mentionne une extension ou le thème, plutôt que wp-includes, indique souvent le vrai responsable.
Vérifier l’objet avant de s’en servir
Dans votre propre code, testez le résultat avant d’appeler la méthode : un produit introuvable doit faire disparaître un bloc, pas toute la page. Pour la base de données, déclarez global $wpdb au début de chaque fonction qui l’utilise.
function mon_theme_prix( $id ) {
$produit = wc_get_product( $id );
if ( ! ( $produit instanceof WC_Product ) ) {
return '';
}
return $produit->get_price_html();
}
Faites une sauvegarde complète avant de changer de thème ou de version d’extension, et conservez le message entier avec sa pile d’appels : c’est le meilleur indice pour la suite.
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