Terrain 11 — Environnement de dev
⏱️ TL;DR — 25 mini-jeux
⭐⭐→⭐⭐⭐pour monter un poste de dev WordPress : install locale,wp-config.php, débogage, WP-CLI, base de données, structure des fichiers, Git. À la fin, tu codes dans de bonnes conditions — indispensable avant les terrains 12→18.
💡 Pour un dev React — C’est ton
create-next-app+.env+ DevTools, version WordPress. Rien d’exotique : un serveur PHP/MySQL, un dossier de projet, une CLI, un debugger.
🕹️ Mini-jeu 1 — Installer WordPress en local ⭐⭐ 💻
But : un site jetable. Mission : crée un site local avec LocalWP. Étapes :
- Installe LocalWP → « Create a new site » → nomme-le.
- Ouvre-le dans le navigateur + l’admin.
✅ Solution
LocalWP fournit PHP + MySQL + WordPress clés en main, sans config. Idéal pour tout ce parcours. Alternatives : wp-env, DevKinsta, XAMPP + WordPress manuel.
🕹️ Mini-jeu 2 — Alternative wp-env ⭐⭐⭐ 💻
But : un env Docker versionnable.
Mission : dans un dossier, lance npx @wordpress/env start.
Étapes :
- Installe Docker →
npm i -g @wordpress/env(ounpx). wp-env start→ site surhttp://localhost:8888.
✅ Solution
wp-env (officiel) démarre WordPress en Docker, configurable par .wp-env.json, monte automatiquement ton plugin/thème. Reproductible et versionnable — parfait pour le dev de plugins/blocs (terrains 15, 8).
🕹️ Mini-jeu 3 — Localiser wp-config.php ⭐⭐ 💻
But : le fichier de config central.
Mission : ouvre wp-config.php à la racine de l’install.
✅ Solution
wp-config.php contient les identifiants BDD, les clés de sécurité (salts), le préfixe de tables, et les constantes de config. C’est le .env de WordPress — jamais commité tel quel en public.
🕹️ Mini-jeu 4 — Activer le débogage ⭐⭐⭐ 💻
But : voir les erreurs.
Mission : passe WP_DEBUG à true.
Étapes :
- Dans
wp-config.php, avant « That’s all » :
define( 'WP_DEBUG', true );✅ Solution
WP_DEBUG affiche notices et erreurs PHP. Indispensable en dev, jamais activé (affiché) en prod. C’est ta console d’erreurs côté serveur.
🕹️ Mini-jeu 5 — Journaliser dans debug.log ⭐⭐⭐ 💻
But : un journal persistant.
Mission : active le log fichier et lis wp-content/debug.log.
Étapes :
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );✅ Solution
WP_DEBUG_LOG écrit les erreurs dans wp-content/debug.log ; WP_DEBUG_DISPLAY à false les cache à l’écran (pas de fuite visuelle). Combo dev idéal : je logue sans polluer les pages. Tu écriras dedans avec error_log() (terrain 12).
🕹️ Mini-jeu 6 — SCRIPT_DEBUG ⭐⭐⭐ 💻
But : débuguer les assets cœur.
Mission : active SCRIPT_DEBUG pour charger les JS/CSS non minifiés.
✅ Solution
define( 'SCRIPT_DEBUG', true ) sert les versions non minifiées des scripts/styles du cœur — utile pour comprendre un comportement de l’éditeur (Partie 8). À désactiver ensuite.
🕹️ Mini-jeu 7 — Installer WP-CLI ⭐⭐⭐ 💻
But : piloter WordPress au terminal. Mission : vérifie WP-CLI (souvent inclus dans LocalWP : « Open site shell »). Étapes :
- Ouvre le shell du site →
wp --info.
✅ Solution
WP-CLI administre WordPress en ligne de commande (indispensable en pro). LocalWP l’expose via « Open site shell ». Sinon, installation manuelle du .phar. wp --info confirme la version PHP/WP-CLI.
🕹️ Mini-jeu 8 — Explorer avec WP-CLI ⭐⭐⭐ 💻
But : lire l’état du site. Mission : liste plugins, thèmes, users. Étapes :
wp core version
wp plugin list
wp theme list
wp user list✅ Solution
Ces commandes donnent l’état complet sans clic. wp plugin list montre actif/inactif + versions. Sur un vrai serveur, WP-CLI est le moyen rapide d’auditer et d’agir.
🕹️ Mini-jeu 9 — Activer un plugin en CLI ⭐⭐⭐ 💻
But : agir, pas seulement lire. Mission : active/désactive un plugin par la CLI. Étapes :
wp plugin activate query-monitor
wp plugin deactivate query-monitor✅ Solution
Idéal quand l’admin est cassé (un plugin fautif bloque le site) : on le désactive en CLI pour reprendre la main. Réflexe de dépannage n°1 en prod.
🕹️ Mini-jeu 10 — Générer du contenu de test ⭐⭐⭐ 💻
But : peupler vite. Mission : crée 20 articles factices. Étapes :
wp post generate --count=20
wp user create bob bob@test.local --role=author✅ Solution
wp post generate et wp user create remplissent un site de test en secondes — parfait pour éprouver une Query Loop, une pagination, un thème. Bien plus rapide qu’à la main.
🕹️ Mini-jeu 11 — Lire/écrire une option ⭐⭐⭐ 💻
But : toucher la config en CLI. Mission : lis puis modifie le titre du site. Étapes :
wp option get blogname
wp option update blogname "Mon site de test"✅ Solution
La table wp_options stocke la config (titre, URL, réglages plugins). wp option get/update la manipule directement. Comprendre que beaucoup de réglages = des options éclaire tout le fonctionnement (terrain 15).
🕹️ Mini-jeu 12 — Search-replace (migration) ⭐⭐⭐⭐ 💻
But : changer d’URL sans casser. Mission : simule une migration d’URL (dry-run). Étapes :
wp search-replace 'http://ancien.local' 'http://nouveau.local' --dry-run✅ Solution
wp search-replace remplace dans toute la base, en gérant les données sérialisées (ce qu’un simple SQL casserait). --dry-run prévisualise. Commande reine de la migration WordPress.
🕹️ Mini-jeu 13 — Exporter la base ⭐⭐⭐ 💻
But : sauvegarde SQL. Mission : exporte la base en un fichier. Étapes :
wp db export sauvegarde.sql✅ Solution
wp db export produit un dump SQL (la base = contenus + réglages). Avec uploads/, c’est la sauvegarde complète. wp db import restaure. Base de tout backup/migration côté dev.
🕹️ Mini-jeu 14 — Régénérer les miniatures en CLI ⭐⭐⭐ 💻
But : l’alternative rapide au plugin. Mission : régénère toutes les tailles d’images. Étapes :
wp media regenerate --yes✅ Solution
Fait en CLI ce que le plugin du terrain 04 fait en UI, mais plus rapidement et scriptable. Sur un gros site média, la CLI est le seul choix raisonnable.
🕹️ Mini-jeu 15 — Structure des fichiers ⭐⭐⭐ 💻
But : carte du dépôt WordPress.
Mission : ouvre la racine et identifie wp-admin/, wp-includes/, wp-content/.
✅ Solution
wp-admin/ (le back-office) et wp-includes/ (le cœur) ne se modifient jamais (écrasés aux MAJ). Tout ton code vit dans wp-content/ (themes/, plugins/, uploads/, mu-plugins/). Règle d’or : ne toucher que wp-content/.
🕹️ Mini-jeu 16 — Explorer la base de données ⭐⭐⭐⭐ 💻
But : voir les tables.
Mission : ouvre Adminer/phpMyAdmin et regarde wp_posts, wp_options, wp_users.
✅ Solution
LocalWP fournit Adminer (bouton « Database »). Tables clés : wp_posts (contenus + CPT), wp_postmeta (métadonnées), wp_options, wp_users/wp_usermeta, wp_terms* (taxonomies). Voir les tables démystifie WordPress (Partie 5).
🕹️ Mini-jeu 17 — Le préfixe de tables ⭐⭐⭐ 💻
But : un détail de sécurité/multi-install.
Mission : repère $table_prefix dans wp-config.php.
✅ Solution
$table_prefix = 'wp_'; préfixe toutes les tables. Le changer permet plusieurs installs dans une même base et complique (un peu) certaines attaques. En code, on n’écrit jamais wp_ en dur : on lit $wpdb->prefix (terrain 15).
🕹️ Mini-jeu 18 — Query Monitor pour développeur ⭐⭐⭐⭐ 💻
But : profiler ton code. Mission : installe Query Monitor et repère les hooks déclenchés sur une page.
✅ Solution
Query Monitor liste requêtes SQL, hooks & actions, scripts, temps, erreurs PHP. Quand tu ajouteras des hooks (terrain 12), il te montrera qu’ils tirent bien. Outil de dev n°1.
🕹️ Mini-jeu 19 — Désactiver l’éditeur de fichiers ⭐⭐⭐ 💻
But : durcir la prod. Mission : interdis l’édition de code depuis l’admin. Étapes :
define( 'DISALLOW_FILE_EDIT', true );✅ Solution
Par défaut, l’admin peut éditer thèmes/plugins depuis wp-admin (Apparence → Éditeur de fichiers) — dangereux (une erreur casse le site, une faille donne l’exécution de code). DISALLOW_FILE_EDIT le coupe. Standard de durcissement (terrain 16).
🕹️ Mini-jeu 20 — Ouvrir le projet dans VS Code ⭐⭐ 💻
But : ton éditeur de code.
Mission : ouvre le dossier wp-content/ dans VS Code.
✅ Solution
Ouvre le dossier du site (ou juste themes//plugins/) dans VS Code : coloration PHP, recherche, terminal intégré. Extensions utiles : PHP Intelephense, WordPress snippets. Tu es en terrain connu.
🕹️ Mini-jeu 21 — Créer un dossier de plugin vide ⭐⭐⭐ 💻
But : préparer le terrain 15.
Mission : crée wp-content/plugins/mon-labo/mon-labo.php avec un en-tête.
Étapes :
<?php
/**
* Plugin Name: Mon Labo
* Description: Bac à sable de mini-jeux.
* Version: 0.1.0
*/✅ Solution
Un simple fichier PHP avec un en-tête de plugin suffit à le faire apparaître dans Extensions. Ce sera ton bac à sable pour les hooks (terrain 12) — plus propre que d’éditer functions.php.
🕹️ Mini-jeu 22 — Activer ton plugin labo ⭐⭐ 💻
But : boucler la boucle.
Mission : active « Mon Labo » depuis Extensions (ou wp plugin activate mon-labo).
✅ Solution
Ton plugin vide s’active sans effet visible (normal). Il est prêt à recevoir du code. Tu viens de créer ta surface de travail pour tous les terrains de code.
🕹️ Mini-jeu 23 — Versionner avec Git ⭐⭐⭐ 💻
But : historiser ton code.
Mission : git init dans ton plugin et fais un premier commit.
Étapes :
cd wp-content/plugins/mon-labo
git init && git add . && git commit -m "init"✅ Solution
On versionne le thème/plugin, pas tout WordPress (le cœur se réinstalle, la base se sauvegarde à part). Ajoute un .gitignore pour node_modules/, vendor/, fichiers de build. Réflexe pro identique à tes projets JS.
🕹️ Mini-jeu 24 — Un debugger (Xdebug) ⭐⭐⭐⭐ 💻
But : poser des points d’arrêt.
Mission : repère si Xdebug est disponible (Santé du site → Infos, ou wp --info).
✅ Solution
Xdebug permet le débogage pas-à-pas (breakpoints) depuis VS Code/PhpStorm — bien plus puissant que error_log(). LocalWP peut l’activer. Facultatif au début, précieux dès que le code se complexifie.
🕹️ Mini-jeu 25 — Récap environnement ⭐⭐⭐ 💻
But : valider le poste de dev.
Mission : un setup complet : site local, WP_DEBUG_LOG actif, WP-CLI opérationnel, base explorée, plugin labo versionné dans Git, VS Code ouvert.
✅ Solution
Tu as un environnement de dev pro : reproductible, débogable, versionné. Tout est prêt pour écrire du code sans peur de casser (c’est local !). Cap sur les hooks (terrain 12), le cœur du métier.
Terrain suivant : 12 — Premier code : hooks & functions.php.