Skip to Content

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 :

  1. Installe LocalWP  → « Create a new site » → nomme-le.
  2. 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 :

  1. Installe Docker → npm i -g @wordpress/env (ou npx).
  2. wp-env start → site sur http://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 :

  1. 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 :

  1. 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.