Chapitre 4.2 — wp-config.php & constantes
⏱️ TL;DR —
wp-config.phpest le fichier de configuration racine de WordPress : identifiants de la base de données, clés de sécurité (salts), préfixe de tables, et une foule de constantes qui pilotent le comportement (débogage, mémoire, révisions, cache, environnement). C’est le premier fichier qu’on adapte à chaque install/migration, et le levier n°1 pour activer le mode développeur. Il ne doit jamais être versionné ni exposé (il contient des secrets).
🎯 Objectifs
- Comprendre le rôle et le contenu de
wp-config.php. - Connaître les constantes essentielles (base, sels, préfixe, débogage, mémoire).
- Activer proprement le mode développeur.
- Adopter les bonnes pratiques de sécurité (secrets,
WP_ENVIRONMENT_TYPE).
1. Rôle et emplacement
wp-config.php se trouve à la racine de l’installation (ou un cran au-dessus du dossier web). WordPress le lit très tôt dans son démarrage (Partie 5) pour se connecter à la base et se configurer. Sans lui (ou mal renseigné), rien ne fonctionne.
2. Les blocs essentiels
// 1) Connexion à la base de données
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', 'root' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
// 2) Clés & sels de sécurité (uniques par site — à générer)
define( 'AUTH_KEY', '…chaîne aléatoire longue…' );
define( 'SECURE_AUTH_KEY', '…' );
// … 8 clés au total (AUTH, SECURE_AUTH, LOGGED_IN, NONCE × KEY/SALT)
// 3) Préfixe des tables
$table_prefix = 'wp_';
// 4) Réglages de développement (voir §3)
define( 'WP_DEBUG', true );- Base de données :
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST— ce qu’on change à chaque migration (ch. 2.6). - Sels (salts) : huit chaînes aléatoires qui chiffrent/signent les cookies et nonces. On les génère via le service officiel
api.wordpress.org/secret-key/1.1/salt/. Les changer déconnecte tout le monde (utile en cas de compromission). $table_prefix: préfixe des tables (wp_par défaut). Le personnaliser (wp_a1b2_) est une (petite) mesure de sécurité à la création ; le changer après coup demande de renommer les tables et d’ajuster des données.
⚠️ Piège — ne versionnez jamais
wp-config.php. Il contient les identifiants de base et les sels. Il doit être dans.gitignoreet hors de la racine web si possible. Exposer ce fichier = livrer les clés du site. En équipe, on versionne unwp-config-sample.phpou on injecte la config par variables d’environnement.
3. Constantes de développement (le mode dev)
Pour développer, activez le débogage (détaillé au ch. 4.5) :
define( 'WP_DEBUG', true ); // active les rapports d'erreur
define( 'WP_DEBUG_LOG', true ); // écrit dans wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // n'affiche PAS les erreurs à l'écran (les logue)
define( 'SCRIPT_DEBUG', true ); // charge les versions non minifiées des JS/CSS du cœur
define( 'SAVEQUERIES', true ); // enregistre les requêtes SQL (debug perf, coûteux)WP_DEBUGactivé en dev, désactivé en prod (jamais d’erreurs affichées aux visiteurs).WP_DEBUG_LOGécrit dans un fichier plutôt qu’à l’écran → propre pour lire les erreurs.SCRIPT_DEBUGsert les assets non minifiés (utile pour déboguer le JS de l’éditeur/cœur).
4. Autres constantes utiles
| Constante | Effet |
|---|---|
WP_MEMORY_LIMIT | Limite mémoire PHP pour WordPress (ex. '256M'). |
WP_POST_REVISIONS | Nombre max de révisions (ch. 2.3). |
DISALLOW_FILE_EDIT | Désactive l’éditeur de code thème/plugin dans l’admin (recommandé en prod pour la sécurité). |
WP_ENVIRONMENT_TYPE | 'local', 'development', 'staging', 'production' — expose l’environnement au code. |
WP_CACHE | Active un cache (si un plugin de cache l’utilise). |
AUTOMATIC_UPDATER_DISABLED | Coupe les mises à jour automatiques. |
FORCE_SSL_ADMIN | Force HTTPS sur l’admin. |
💡 Pour un dev React —
wp-config.phpest votre.env+ config runtime réunis. La bonne pratique moderne : ne pas coder les secrets en dur mais les lire depuis des variables d’environnement (getenv()), surtout en CI/déploiement — exactement comme vous le feriez avecprocess.env. EtWP_ENVIRONMENT_TYPEest l’équivalent deNODE_ENV: votre code peut faireif ( wp_get_environment_type() === 'production' )pour adapter son comportement (logs, features, clés d’API de test).
5. Ordre et zone d’édition
Tout doit être défini avant la ligne :
/* C'est tout, ne modifiez rien au-delà. */
require_once ABSPATH . 'wp-settings.php';Ajouter des define() après cette ligne n’aura aucun effet (WordPress est déjà démarré). Placez vos constantes au-dessus.
✏️ Exercices
- Quelles constantes activez-vous pour développer, et laquelle faut-il désactiver en production ?
- Pourquoi ne jamais committer
wp-config.phpdans Git ? - À quoi sert
WP_ENVIRONMENT_TYPEet à quel concept Node correspond-il ?
✅ Solution
- En dev :
WP_DEBUG = true,WP_DEBUG_LOG = true,WP_DEBUG_DISPLAY = false, éventuellementSCRIPT_DEBUG. En production,WP_DEBUGdoit être désactivé (false) pour ne pas afficher d’erreurs aux visiteurs. - Il contient les identifiants de la base et les sels de sécurité (secrets) ; le versionner ou l’exposer compromet le site. Il va dans
.gitignore, idéalement alimenté par des variables d’environnement. - À exposer l’environnement courant (
local/development/staging/production) au code viawp_get_environment_type(), pour adapter le comportement — équivalent deNODE_ENV.
🧠 Quiz de révision
1. Que contient wp-config.php ?
Les identifiants de base de données, les clés/sels de sécurité, le préfixe de tables et des constantes de configuration.
2. Que sont les « sels » (salts) ?
Huit chaînes aléatoires uniques qui signent/chiffrent cookies et nonces ; les changer déconnecte tous les utilisateurs.
3. Comment activer le débogage sans afficher les erreurs aux visiteurs ?
WP_DEBUG = true + WP_DEBUG_LOG = true + WP_DEBUG_DISPLAY = false (les erreurs vont dans debug.log).
4. Quelle constante sécurise l’admin en interdisant l’édition de code ?
DISALLOW_FILE_EDIT (recommandée en production).
5. Où doivent être placées les constantes personnalisées ?
Avant la ligne require_once ABSPATH . 'wp-settings.php'; (sinon elles sont sans effet).
Chapitre suivant : WP-CLI : la ligne de commande.