Cours WordPress — Semaine 2

FORMATION WORDPRESS · MODULE 02/08 · 10 HEURES

Comprendre PHP et les mécanismes WordPress

Vous débutez totalement ? Commencez par la section « Mode débutant » de chaque atelier : elle explique où cliquer, quoi faire et comment vérifier votre résultat. Le code vient après les manipulations simples. Voir aussi le guide de prise en main →

Avant de coder un thème ou un plugin, apprenez à séparer les responsabilités, à employer les Hooks et à charger proprement les fichiers CSS/JS. Cette semaine transforme des exemples copiés en code expliqué et maintenable.

Votre livrable professionnel

Deux petites classes PHP distinctes, un fichier composer.json cohérent, un Hook action et un filtre fonctionnels, un CSS chargé avec wp_enqueue_style et une fiche de tests.

Comment travailler ce module ?

  1. Lisez la notion et l’exemple.
  2. Reproduisez le code sur un WordPress de test, jamais sur le site d’un client.
  3. Vérifiez le résultat attendu et enregistrez une preuve.
  4. Validez votre étape avec le switch du panneau de progression.
  5. Terminez par le quiz noté, tout en bas de la page.

PARCOURS GUIDÉ

Cinq étapes pour produire un résultat concret

Cliquez sur une étape pour découvrir sa mission. Le bouton « Aller à cette étape dans le cours » ouvre directement sa procédure détaillée. Le switch en colonne de droite enregistre votre avancement.

ÉTAPE 01 / 05

Créer deux classes aux responsabilités distinctes

Des fonctions aux classes Une classe regroupe une responsabilité. Évitez une classe unique contenant menus, API, formulaire et SEO : les modifications deviennent difficiles à tester. Exemple de…

Action : lire la procédure, la reproduire, puis activer le switch après contrôle du résultat.

ÉTAPE 02 / 05

Configurer Composer et PSR-4

Autoload et Composer Un autoload évite les dizaines de require_once . Composer peut créer le chargeur PSR-4, mais ce n’est pas une obligation pour installer les pages de l’Académie . Il s’agit…

Action : lire la procédure, la reproduire, puis activer le switch après contrôle du résultat.

ÉTAPE 03 / 05

Enregistrer une Action et un Filter

Actions vs filtres Une action déclenche une opération ; un filtre reçoit une valeur et doit la retourner . Exemple : filtre de classes HTML add_filter( ‘body_class’, function ( array $classes ):…

Action : lire la procédure, la reproduire, puis activer le switch après contrôle du résultat.

ÉTAPE 04 / 05

Charger CSS/JS conditionnellement

Charger CSS et JavaScript de manière WordPress Le navigateur peut voir une ressource, mais WordPress a besoin de connaître sa version, ses dépendances et le contexte d’usage. Exemple fiable pour…

Action : lire la procédure, la reproduire, puis activer le switch après contrôle du résultat.

ÉTAPE 05 / 05

Lancer tests unitaires et contrôle qualité

Tester avant de livrer Un code qui s’affiche une fois ne suffit pas. Il faut une méthode reproductible et des vérifications ciblées. Protocole manuel Activez un journal PHP sur votre staging…

Action : lire la procédure, la reproduire, puis activer le switch après contrôle du résultat.

COURS APPROFONDI & ATELIERS

Comprendre, coder et construire le site

Ces exemples sont volontairement progressifs. Les extraits de code s’exécutent dans des fichiers PHP d’un thème/plugin WordPress, pas directement dans le texte d’une page LiveCanvas.

Schéma de progression du module 2
Schéma pédagogique illustratif : ce n’est pas une capture réelle de votre écran WordPress.
ATELIER 01

Créer deux classes aux responsabilités distinctes

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 01

Vous partez de zéro ? Suivez chaque clic.

PHP produit le HTML de nombreux thèmes et plugins WordPress. Avant les classes, révisez variables, conditions et fonctions : ces éléments sont indispensables pour lire un template.

Où aller ?

Fichiers du thème d’exercice ; éditeur de code ; navigateur.

Manipulation expliquée pas à pas
  1. 01
    Installez un éditeur de code (par exemple VS Code) et ouvrez le dossier d’un thème d’exercice.
  2. 02
    Créez un fichier aide-exemples.php destiné à la lecture locale, pas à une publication accessible en ligne.
  3. 03
    Identifiez dans le code ci-dessous la variable $nom, la fonction esc_html() et la condition if.
  4. 04
    Expliquez à l’oral ce qui change quand $nom passe de « Atelier Horizon » à « Mon agence ».
  5. 05
    Recopiez l’exemple dans un template WordPress de test seulement si vous maîtrisez le contexte PHP ; observez la sortie HTML dans le navigateur.
Exemple à observer ou reproduire

<?php $nom = 'Atelier Horizon'; if ($nom !== '') { echo '<p>Bienvenue chez ' . esc_html($nom) . '</p>'; }

✓ Résultat attendu

Vous pouvez lire une variable, repérer une condition et expliquer pourquoi esc_html protège du contenu affiché.

Si cela ne fonctionne pas

Si le navigateur affiche littéralement « <?php », votre fichier n’est pas interprété par PHP : vérifiez que le code se trouve dans un vrai template PHP.

À retenir

Variable : donnée nommée. Condition : instruction exécutée si une règle est vraie. Fonction : bloc de code réutilisable.

Des fonctions aux classes

Une classe regroupe une responsabilité. Évitez une classe unique contenant menus, API, formulaire et SEO : les modifications deviennent difficiles à tester.

Exemple de classe simple

namespace Atelier\Frontend; final class Assets { public function hooks(): void { add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ] ); } public function enqueue(): void { wp_enqueue_style( 'atelier-main', get_theme_file_uri( '/assets/css/main.css' ), [], '1.0' ); } }

Pas à pas

  1. Créez src/Frontend/Assets.php dans votre thème de test.
  2. Recopiez le code ; vérifiez l’ouverture <?php et la correspondance namespace/classe.
  3. Créez une classe ContentManager vide pour distinguer les contenus des ressources.
  4. Reformulez à l’oral le rôle de chaque méthode et la différence entre new et static.

Résultat attendu

Le fichier PHP se charge sans erreur de syntaxe ; la responsabilité de chaque classe est claire. Son utilisation sera branchée à WordPress à l’étape suivante.

Point de contrôle 01

Le résultat est-il reproductible ? Gardez une preuve (capture ou extrait de code), puis validez l’interrupteur « Étape 01 » dans votre suivi.

ATELIER 02

Configurer Composer et PSR-4

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 02

Vous partez de zéro ? Suivez chaque clic.

À mesure que le projet grandit, organiser le code par fichiers évite les duplications. Composer et PSR-4 sont utiles pour des projets structurés ; commencez par comprendre leur objectif.

Où aller ?

Projet de développement → composer.json et src/Frontend/AssetManager.php.

Manipulation expliquée pas à pas
  1. 01
    Dans le dossier de votre projet d’exercice, créez un répertoire src/Frontend.
  2. 02
    Créez une classe AssetManager dans le fichier src/Frontend/AssetManager.php ; observez la correspondance namespace/dossiers.
  3. 03
    Créez composer.json avec l’autoload PSR-4 montré ci-dessous.
  4. 04
    Exécutez « composer dump-autoload » uniquement sur votre machine de développement disposant de Composer. Si vous n’utilisez pas de terminal, analysez la structure sans exécuter cette étape.
  5. 05
    Vérifiez l’existence du fichier vendor/autoload.php et ne téléversez pas de dépendances inutiles en production.
Exemple à observer ou reproduire

{ "autoload": {"psr-4": {"Agency\\": "src/"}} }

✓ Résultat attendu

Vous savez expliquer comment le namespace Agency\Frontend correspond à src/Frontend/ et pourquoi Composer facilite le chargement.

Si cela ne fonctionne pas

« Class not found » indique souvent un chemin incorrect, un nom de fichier dont la casse diffère ou un autoload non généré.

À retenir

Namespace : préfixe logique d’une classe. Autoload : chargement automatique des classes.

Conseil : Composer n’est pas nécessaire pour créer votre toute première page WordPress : il intervient ici comme apprentissage progressif.

Autoload et Composer

Un autoload évite les dizaines de require_once. Composer peut créer le chargeur PSR-4, mais ce n’est pas une obligation pour installer les pages de l’Académie. Il s’agit ici d’un outil de développement PHP.

Fichier à créer : composer.json

{ "name": "atelier-horizon/theme", "type": "project", "autoload": { "psr-4": { "Atelier\\": "src/" } } }

Pas à pas

  1. Créez composer.json à la racine du projet sur votre machine de développement.
  2. Utilisez Composer localement pour générer vendor/autoload.php (ou fournissez une archive de projet déjà construite).
  3. Dans le functions.php du thème, chargez vendor/autoload.php seulement s’il existe.
  4. Instanciez Atelier\Frontend\Assets et appelez hooks().
  5. Vérifiez qu’un chemin de fichier incorrect déclenche une erreur explicable.

Erreur fréquente : confondre Atelier\ comme chaîne JSON échappée et namespace Atelier; dans PHP. Les deux représentations n’ont pas la même syntaxe.

Point de contrôle 02

Le résultat est-il reproductible ? Gardez une preuve (capture ou extrait de code), puis validez l’interrupteur « Étape 02 » dans votre suivi.

ATELIER 03

Enregistrer une Action et un Filter

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 03

Vous partez de zéro ? Suivez chaque clic.

Les Hooks sont les points d’extension WordPress. Une action déclenche du code ; un filtre reçoit une donnée et renvoie la donnée éventuellement modifiée.

Où aller ?

Thème enfant → functions.php. Documentation → developer.wordpress.org.

Manipulation expliquée pas à pas
  1. 01
    Dans le thème enfant d’exercice, ouvrez functions.php.
  2. 02
    Ajoutez un petit Hook after_setup_theme qui active la gestion du titre par WordPress.
  3. 03
    Ajoutez le filtre documenté ci-dessous pour comprendre le retour d’une chaîne.
  4. 04
    Chargez le site et affichez le titre de l’onglet du navigateur.
  5. 05
    Supprimez le filtre de test après observation et notez la différence entre add_action et add_filter.
Exemple à observer ou reproduire

add_action('after_setup_theme', function () { add_theme_support('title-tag'); }); add_filter('excerpt_length', function ($length) { return 22; });

✓ Résultat attendu

Le site charge correctement et vous pouvez expliquer ce qui arrive si un callback de filtre n’effectue pas de return.

Si cela ne fonctionne pas

Si une modification casse le site, renommez temporairement le fichier modifié via l’hébergement ou restaurez votre copie : ne multipliez pas les essais dans une page d’administration inaccessible.

À retenir

Action : événement exécutant du code. Filtre : opération sur une valeur retournée.

Actions vs filtres

Une action déclenche une opération ; un filtre reçoit une valeur et doit la retourner.

Exemple : filtre de classes HTML

add_filter( 'body_class', function ( array $classes ): array { if ( is_front_page() ) { $classes[] = 'is-home'; } return $classes; } );

Exemple : une action à l’initialisation du thème

add_action( 'after_setup_theme', function (): void { add_theme_support( 'title-tag' ); add_theme_support( 'post-thumbnails' ); register_nav_menus( [ 'primary' => 'Menu principal' ] ); } );

Pas à pas

  1. Ajoutez le filtre et vérifiez avec l’inspecteur HTML que la classe is-home n’apparaît que sur l’accueil.
  2. Activez la prise en charge des images mises en avant dans les articles.
  3. Supprimez temporairement return $classes; sur votre environnement de test pour constater l’erreur, puis restaurez le code.
  4. Rédigez deux phrases : « J’utilise une action quand… » et « J’utilise un filtre quand… ».

Résultat attendu

Les classes CSS apparaissent sur le bon écran et aucune valeur n’est perdue après le filtre.

Point de contrôle 03

Le résultat est-il reproductible ? Gardez une preuve (capture ou extrait de code), puis validez l’interrupteur « Étape 03 » dans votre suivi.

ATELIER 04

Charger CSS/JS conditionnellement

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 04

Vous partez de zéro ? Suivez chaque clic.

Le navigateur doit recevoir le CSS et le JavaScript dans un ordre contrôlé. WordPress possède des fonctions dédiées : ne placez pas arbitrairement des balises <script> dans les pages.

Où aller ?

Fichiers du thème enfant → assets/css, assets/js, functions.php ; navigateur → Inspecter → Réseau.

Manipulation expliquée pas à pas
  1. 01
    Créez le fichier assets/css/site.css dans le thème enfant.
  2. 02
    Ajoutez des règles simples pour l’espacement des titres et la couleur des boutons.
  3. 03
    Dans functions.php, utilisez wp_enqueue_style() pour enregistrer le fichier CSS ; remplacez les chemins d’exemple par ceux de votre thème.
  4. 04
    Ouvrez une page du site et inspectez l’onglet Réseau des outils de développement pour vérifier le chargement du CSS.
  5. 05
    Créez ensuite assets/js/site.js et chargez-le avec wp_enqueue_script() en pied de page sur WordPress de test.
Exemple à observer ou reproduire

add_action('wp_enqueue_scripts', function () { wp_enqueue_style('agency-site', get_stylesheet_directory_uri() . '/assets/css/site.css', [], '1.0'); });

✓ Résultat attendu

Le CSS se charge sans erreur 404 et un changement de couleur est visible sans conflit global.

Si cela ne fonctionne pas

Une erreur 404 sur CSS indique un mauvais chemin ou un nom de fichier différent. Purgez le cache avant de conclure que le code ne fonctionne pas.

À retenir

Asset : fichier CSS/JS chargé sur une page. Enqueue : méthode WordPress pour charger une ressource.

Charger CSS et JavaScript de manière WordPress

Le navigateur peut voir une ressource, mais WordPress a besoin de connaître sa version, ses dépendances et le contexte d’usage.

Exemple fiable pour un thème

add_action( 'wp_enqueue_scripts', function (): void { wp_enqueue_style( 'atelier-style', get_theme_file_uri( '/assets/css/main.css' ), [], '1.0.0' ); if ( is_front_page() ) { wp_enqueue_script( 'atelier-home', get_theme_file_uri( '/assets/js/home.js' ), [], '1.0.0', true ); } } );

Pas à pas

  1. Créez les deux fichiers assets/css/main.css et assets/js/home.js.
  2. Ajoutez le Hook à functions.php.
  3. Dans les outils réseau du navigateur, vérifiez que main.css arrive sur toutes les pages et home.js seulement à l’accueil.
  4. Modifiez la version après une mise à jour pour gérer le cache.

À éviter : copier directement des balises <script> dans header.php sans justification, ce qui complique les dépendances.

Point de contrôle 04

Le résultat est-il reproductible ? Gardez une preuve (capture ou extrait de code), puis validez l’interrupteur « Étape 04 » dans votre suivi.

ATELIER 05

Lancer tests unitaires et contrôle qualité

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 05

Vous partez de zéro ? Suivez chaque clic.

Apprendre à développer signifie aussi apprendre à observer et corriger. Vous n’avez pas besoin d’une suite de tests sophistiquée le premier jour ; commencez par une recette manuelle solide.

Où aller ?

Navigateur → Inspecter → Console/Réseau ; projet de développement → tests/.

Manipulation expliquée pas à pas
  1. 01
    Relisez functions.php et notez les changements effectués et leur objectif.
  2. 02
    Ouvrez la page sur mobile et ordinateur ; contrôlez la présence du CSS et l’absence d’erreur réseau.
  3. 03
    Dans l’inspecteur du navigateur, consultez Console et Réseau ; relevez les éventuelles erreurs.
  4. 04
    Si Composer et PHPUnit sont installés localement, créez un premier test d’une fonction PHP pure ; sinon conservez cette étape comme exercice avancé.
  5. 05
    Livrez une fiche « hypothèse → test → observation → correction » pour un problème que vous avez rencontré.

Exemple concret : Exemple de fiche : « CSS absent → 404 sur /assets/css/site.css → mauvais nom de dossier → chemin corrigé → affichage OK ».

✓ Résultat attendu

Votre site d’exercice s’ouvre sans erreur bloquante et vous savez documenter un diagnostic reproductible.

Si cela ne fonctionne pas

Une console sans erreur ne garantit pas l’absence de bugs ; testez aussi le menu, les liens, le clavier et les formulaires.

À retenir

Test unitaire : vérification ciblée d’un comportement. Régression : erreur introduite par une modification récente.

Tester avant de livrer

Un code qui s’affiche une fois ne suffit pas. Il faut une méthode reproductible et des vérifications ciblées.

Protocole manuel

  1. Activez un journal PHP sur votre staging privé, jamais en exposition publique.
  2. Chargez Accueil, Article et Contact avec l’inspecteur navigateur ouvert.
  3. Vérifiez les requêtes réseau CSS/JS et l’absence d’erreurs console.
  4. Déclenchez volontairement un chemin d’asset inexistant, identifiez le 404, puis corrigez-le.
  5. Utilisez php -l sur votre machine si PHP est disponible ; ajoutez PHPCS/WPCS en étape avancée.
  6. Conservez la version du code dans Git avec une note de test.

Preuve attendue

Capture de l’onglet Réseau, un journal de modifications et une explication claire de l’incident provoqué.

Limite : PHPCS et un contrôle syntaxique ne démontrent ni l’absence de failles ni la compatibilité totale de WordPress.

Point de contrôle 05

Le résultat est-il reproductible ? Gardez une preuve (capture ou extrait de code), puis validez l’interrupteur « Étape 05 » dans votre suivi.

SOURCES & SUPPORTS

Ressources du module

Documentation officielle : Consulter la référence WordPress ↗. Vidéos : ajoutez des tutoriels enregistrés et vérifiés dans LiveCanvas ; aucune vidéo factice n’est présentée comme un cours existant.

Note pédagogique — Les PDF sont des supports transversaux. Les extraits de code et procédures enrichies de cette page font partie de la V2.3. Les corrigés détaillés des quiz apparaissent seulement après soumission du questionnaire.

FIN DU MODULE · ÉVALUATION

Vérifiez vos connaissances

Répondez aux cinq questions. Après correction, découvrez votre note sur 20, le nombre d’erreurs et l’explication de chaque réponse. Quatre réponses correctes sur cinq sont nécessaires pour valider le nouveau quiz.

1. Que fait PSR-4 ?
2. Quel Hook charge les ressources frontend ?
3. Un filtre doit-il renvoyer une valeur ?
4. Quel Hook permet de déclarer le menu et les supports du thème ?
5. Quelle fonction WordPress charge un fichier CSS en gérant les dépendances ?

Connexion nécessaire pour enregistrer la note et les corrections.