Cours WordPress — Semaine 3

FORMATION WORDPRESS · MODULE 03/08 · 10 HEURES

Coder un thème WordPress complet, de zéro

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 →

Nous construisons un thème classique natif. Vous ne copiez plus seulement un template : vous apprenez pourquoi existent index.php, functions.php, header.php, footer.php, page.php, single.php et front-page.php.

Votre livrable professionnel

Thème activable avec header/footer réutilisables, menu administrable, page d’accueil personnalisée, page d’article, fichiers CSS/JS séparés, responsive et navigation au clavier.

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 le squelette du thème natif

Créer le thème minimal Un thème classique apparaît dans Apparence → Thèmes lorsqu’il contient au minimum style.css avec un en-tête valide et index.php . functions.php ajoute ensuite menus,…

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

ÉTAPE 02 / 05

Coder header, footer et navigation

Coder le header, le menu et le footer Le header et le footer sont inclus partout. Les points d’extension wp_head() , wp_body_open() et wp_footer() sont indispensables à de nombreux plugins.…

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

ÉTAPE 03 / 05

Développer The Loop dans single.php

Les pages d’article et The Loop single.php affiche par défaut un article classique. La requête principale est déjà prête : inutile de lancer un nouveau WP_Query pour afficher l’article courant.…

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

ÉTAPE 04 / 05

Créer composants et CSS responsive

Accueil personnalisé et composants réutilisables front-page.php est le template prioritaire pour l’accueil. Les Template Parts réutilisent un même affichage, par exemple une carte d’article.…

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

ÉTAPE 05 / 05

Vérifier le rendu et le clavier

Responsive, lisibilité et accessibilité La qualité n’est pas seulement visuelle : le site doit fonctionner sans défilement horizontal ni menu inaccessible. CSS mobile-first .container {…

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 3
Schéma pédagogique illustratif : ce n’est pas une capture réelle de votre écran WordPress.
ATELIER 01

Créer le squelette du thème natif

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 01

Vous partez de zéro ? Suivez chaque clic.

Un thème classique WordPress est principalement un ensemble de fichiers PHP/CSS que WordPress sélectionne pour afficher les contenus. On va d’abord construire un thème minimal sur un site d’exercice.

Où aller ?

wp-content/themes/agency-starter-lab/style.css et index.php ; WordPress → Apparence → Thèmes.

Manipulation expliquée pas à pas
  1. 01
    Faites une sauvegarde du site de test et ouvrez son dossier wp-content/themes dans le gestionnaire de fichiers ou votre éditeur.
  2. 02
    Créez un dossier agency-starter-lab ; ajoutez style.css avec l’en-tête Theme Name montré ci-dessous.
  3. 03
    Créez index.php et placez une structure simple affichant le titre du site et la boucle WordPress.
  4. 04
    Dans WordPress → Apparence → Thèmes, vérifiez que le thème apparaît ; activez-le uniquement sur le site de test.
  5. 05
    Ouvrez une page existante et vérifiez que son titre et son contenu apparaissent.
Exemple à observer ou reproduire

/* Theme Name: Agency Starter Lab Version: 0.1.0 Text Domain: agency-starter-lab */

✓ Résultat attendu

Le thème figure dans Apparence et le site affiche au minimum une page sans erreur PHP.

Si cela ne fonctionne pas

Si le thème est annoncé « cassé », vérifiez l’en-tête de style.css et la présence de index.php. Ne remplacez pas Picostrap sur le site de l’Académie.

À retenir

Thème classique : fichiers PHP choisis selon l’URL. Theme Name : en-tête requis de style.css.

Conseil : Un thème enfant convient aux modifications d’un thème parent ; ce module étudie un thème autonome dans une installation séparée.

Créer le thème minimal

Un thème classique apparaît dans Apparence → Thèmes lorsqu’il contient au minimum style.css avec un en-tête valide et index.php. functions.php ajoute ensuite menus, options et ressources.

Arborescence du thème

wp-content/themes/atelier-horizon/ ├── style.css ├── index.php ├── functions.php ├── header.php ├── footer.php ├── front-page.php ├── home.php ├── page.php ├── single.php ├── 404.php ├── template-parts/content-card.php └── assets/css/main.css

Exemple style.css

/* Theme Name: Atelier Horizon Version: 1.0.0 Text Domain: atelier-horizon */

Exemple index.php

<?php get_header(); ?> <main id="contenu" class="site-main"> <?php while ( have_posts() ) : the_post(); ?> <h1><?php the_title(); ?></h1> <?php the_content(); ?> <?php endwhile; ?> </main> <?php get_footer(); ?>

Pas à pas

  1. Créez le dossier et les fichiers sur staging.
  2. Placez l’en-tête dans style.css, sauvegardez.
  3. Activez Atelier Horizon depuis Apparence.
  4. Vérifiez le chargement d’un article et d’une page.
  5. Ajoutez les autres templates au fil des prochaines étapes.

À éviter : renommer le thème parent ou modifier directement le Core pour personnaliser l’affichage.

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

Coder header, footer et navigation

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 02

Vous partez de zéro ? Suivez chaque clic.

Le header contient la structure de début du document, la navigation et le logo ; le footer termine la page. Dans WordPress, ces zones doivent conserver les Hooks attendus.

Où aller ?

wp-content/themes/agency-starter-lab/header.php, footer.php, functions.php ; WordPress → Apparence → Menus.

Manipulation expliquée pas à pas
  1. 01
    Créez header.php : doctype, html avec language_attributes(), head avec wp_head(), body et wp_body_open().
  2. 02
    Ajoutez un lien d’évitement « Aller au contenu » et une balise header contenant le titre du site.
  3. 03
    Créez footer.php avec footer, wp_footer() et les balises de fermeture.
  4. 04
    Dans functions.php, enregistrez le menu principal avec register_nav_menus() sur after_setup_theme.
  5. 05
    Dans header.php, affichez wp_nav_menu() si un menu est affecté.
  6. 06
    Dans WordPress → Apparence → Menus (ou l’interface de navigation selon le thème), créez un menu Accueil/Services/Blog/Contact et affectez-le à son emplacement.
Exemple à observer ou reproduire

// functions.php add_action('after_setup_theme', function () { register_nav_menus(['primary' => 'Menu principal']); add_theme_support('title-tag'); add_theme_support('post-thumbnails'); }); // header.php, à l’intérieur de l’élément header : wp_nav_menu(['theme_location' => 'primary']);

✓ Résultat attendu

Le site affiche un header, un menu fonctionnel et un footer ; les scripts frontend continuent de se charger.

Si cela ne fonctionne pas

Un menu vide signifie généralement qu’aucun menu n’est affecté à l’emplacement ou que le thème ne l’a pas déclaré. wp_head() et wp_footer() sont obligatoires pour de nombreuses extensions.

À retenir

Emplacement de menu : zone déclarée par le thème. wp_head/wp_footer : points d’injection nécessaires.

Conseil : Ne copiez pas un menu statique en dur dans toutes les pages : il doit rester modifiable depuis WordPress.

Coder le header, le menu et le footer

Le header et le footer sont inclus partout. Les points d’extension wp_head(), wp_body_open() et wp_footer() sont indispensables à de nombreux plugins.

header.php, version simplifiée

<!doctype html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width,initial-scale=1"> <?php wp_head(); ?> </head> <body <?php body_class(); ?>> <?php wp_body_open(); ?> <a class="skip-link" href="#contenu">Aller au contenu</a> <header class="site-header"> <a href="<?php echo esc_url( home_url( '/' ) ); ?>"> <?php bloginfo( 'name' ); ?> </a> <nav aria-label="Navigation principale"> <?php wp_nav_menu( [ 'theme_location' => 'primary' ] ); ?> </nav> </header>

footer.php

<footer class="site-footer"> <p>&copy; <?php echo esc_html( date( 'Y' ) ); ?> Atelier Horizon</p> </footer> <?php wp_footer(); ?> </body></html>

Pas à pas

  1. Ajoutez register_nav_menus() dans functions.php (semaine 2).
  2. Dans Apparence → Menus, créez le menu et affectez-le à l’emplacement principal.
  3. Vérifiez le lien du logo vers l’accueil.
  4. Naviguez au clavier avec Tab ; le lien d’évitement doit être utilisable.
  5. Contrôlez que le footer apparaît sur accueil, page et article.

Attention : un menu visible sur desktop n’est pas automatiquement accessible sur mobile. Le thème exemple fourni comprend un script de navigation à tester.

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

Développer The Loop dans single.php

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 03

Vous partez de zéro ? Suivez chaque clic.

Le fichier single.php sert à l’affichage détaillé d’un article classique. La Loop WordPress récupère le contenu sélectionné par la requête principale.

Où aller ?

Fichier single.php ; WordPress → Articles → Ajouter.

Manipulation expliquée pas à pas
  1. 01
    Dans votre thème de test, créez single.php.
  2. 02
    Ajoutez get_header(), une balise main, puis have_posts(), the_post(), the_title() et the_content().
  3. 03
    Affichez la date avec get_the_date() et les catégories avec the_category().
  4. 04
    Après la Loop, appelez get_footer().
  5. 05
    Dans Articles → Ajouter, publiez un article de test contenant titre, texte, image et catégorie ; ouvrez son URL.
  6. 06
    Contrôlez l’ordre des informations et le bon rendu sur mobile.
Exemple à observer ou reproduire

<?php get_header(); ?> <main id="contenu"><div class="container"> <?php while (have_posts()) : the_post(); ?> <article <?php post_class(); ?>> <h1><?php the_title(); ?></h1> <p><?php echo esc_html(get_the_date()); ?></p> <?php the_content(); ?> </article> <?php endwhile; ?> </div></main> <?php get_footer(); ?>

✓ Résultat attendu

Chaque article ouvre une page détaillée présentant son titre, sa date, sa catégorie et son corps de texte.

Si cela ne fonctionne pas

Si le contenu n’apparaît pas, vérifiez que the_content() est dans la boucle ; si le template est ignoré, contrôlez le nom exact single.php.

À retenir

The Loop : boucle de lecture. Template tag : fonction WordPress qui affiche une information.

Conseil : Le contenu HTML de l’article reste éditable dans WordPress : le PHP ne remplace pas les textes des rédacteurs.

Les pages d’article et The Loop

single.php affiche par défaut un article classique. La requête principale est déjà prête : inutile de lancer un nouveau WP_Query pour afficher l’article courant.

Exemple de single.php

<?php get_header(); ?> <main id="contenu" class="container"> <?php while ( have_posts() ) : the_post(); ?> <article <?php post_class(); ?>> <h1><?php the_title(); ?></h1> <p>Publié le <?php echo esc_html( get_the_date() ); ?></p> <?php if ( has_post_thumbnail() ) the_post_thumbnail( 'large' ); ?> <div class="entry-content"><?php the_content(); ?></div> <?php the_category( ', ' ); ?> </article> <?php endwhile; ?> </main> <?php get_footer(); ?>

Pas à pas

  1. Créez un article « Préparer son site » avec image, catégorie et paragraphes.
  2. Ajoutez single.php au thème.
  3. Ouvrez l’article et vérifiez les données dynamiques : titre, date, image, catégorie et texte.
  4. Modifiez le titre depuis l’admin ; vérifiez que le template change sans modification de code.
  5. Faites un second test avec un article sans image.

Résultat

Un seul template permet de présenter autant d’articles que nécessaire, sans copier-coller le HTML de chaque publication.

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

Créer composants et CSS responsive

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 04

Vous partez de zéro ? Suivez chaque clic.

Un thème professionnel utilise des composants communs plutôt que de répéter les mêmes cartes. Il doit également fonctionner au clavier et sur petit écran.

Où aller ?

Fichiers template-parts/card-post.php et assets/css/site.css ; navigateur → mode responsive.

Manipulation expliquée pas à pas
  1. 01
    Créez template-parts/card-post.php pour afficher le titre, la miniature et le lien d’un article.
  2. 02
    Depuis un template de liste, appelez get_template_part(‘template-parts/card-post’).
  3. 03
    Dans style.css ou assets/css/site.css, créez une grille CSS qui n’affiche qu’une colonne sur mobile.
  4. 04
    Ajoutez une deuxième et troisième colonne seulement sur des écrans plus larges.
  5. 05
    Testez le parcours au clavier avec Tab ; le focus doit rester visible et tous les liens doivent être atteignables.
Exemple à observer ou reproduire

/* Mobile d’abord */ .posts-grid {display:grid;grid-template-columns:1fr;gap:1.25rem;} .posts-grid img {max-width:100%;height:auto;} @media (min-width:768px) {.posts-grid {grid-template-columns:repeat(2,minmax(0,1fr));}}

✓ Résultat attendu

La carte d’article est réutilisable, le texte reste lisible à 320 px et aucun élément ne déborde horizontalement.

Si cela ne fonctionne pas

Si la grille déborde, recherchez une largeur fixe sur une carte ou une image. Préférez minmax(0, 1fr) et max-width:100% sur les images.

À retenir

Composant : fragment réutilisable. Responsive : mise en page adaptée aux tailles d’écran.

Accueil personnalisé et composants réutilisables

front-page.php est le template prioritaire pour l’accueil. Les Template Parts réutilisent un même affichage, par exemple une carte d’article.

Exemple de front-page.php

<?php get_header(); ?> <main id="contenu"> <section class="hero"> <h1>Sites web et conseil digital</h1> <a href="<?php echo esc_url( home_url( '/contact/' ) ); ?>"> Demander un devis </a> </section> <section class="container"> <h2>Derniers articles</h2> <?php $news = new WP_Query( [ 'post_type' => 'post', 'posts_per_page' => 3 ] ); while ( $news->have_posts() ) { $news->the_post(); get_template_part( 'template-parts/content', 'card' ); } wp_reset_postdata(); ?> </section> </main> <?php get_footer(); ?>

Pas à pas

  1. Créez template-parts/content-card.php, contenant un lien vers le titre et un extrait.
  2. Intégrez le fragment dans front-page.php.
  3. Ajoutez un quatrième article et constatez que seuls trois sont affichés.
  4. Ajoutez une section « Nos services » alimentée d’abord par le contenu de votre page Services.
  5. Remplacez les chaînes figées par des données administrables lorsque c’est nécessaire.

À éviter : construire une page d’accueil entièrement statique si le client doit pouvoir modifier les contenus sans développeur.

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

Vérifier le rendu et le clavier

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 05

Vous partez de zéro ? Suivez chaque clic.

Cette étape relie le code et l’interface d’administration pour vérifier un site réellement éditable.

Où aller ?

Administration WordPress ; site public ; navigateur mobile.

Manipulation expliquée pas à pas
  1. 01
    Dans Pages → Ajouter, créez Accueil, À propos, Services et Contact si ce n’est déjà fait.
  2. 02
    Dans Réglages → Lecture, associez Accueil à la page d’accueil et une page Blog à la liste des articles.
  3. 03
    Ajoutez au moins deux articles avec une image mise en avant dans Articles.
  4. 04
    Testez le header, les liens, la page d’article, le footer et l’accès au clavier.
  5. 05
    Relevez les différences d’affichage sur ordinateur et mobile, corrigez les problèmes puis gardez deux captures comparatives.

Exemple concret : Livrable : ZIP du thème + captures Accueil, Blog et Article + liste des tests réalisés.

✓ Résultat attendu

Le thème d’exercice utilise les vrais contenus WordPress et reste lisible sur les principales tailles d’écran.

Si cela ne fonctionne pas

Lorsque la page d’accueil montre le blog au lieu de la page Accueil, vérifiez Réglages → Lecture et la présence d’un éventuel front-page.php.

À retenir

Intégration : connexion entre code du thème et contenus administrables.

Responsive, lisibilité et accessibilité

La qualité n’est pas seulement visuelle : le site doit fonctionner sans défilement horizontal ni menu inaccessible.

CSS mobile-first

.container { width:min(100% - 2rem, 1160px); margin:auto; } .cards { display:grid; grid-template-columns:1fr; gap:1.25rem; } img { max-width:100%; height:auto; } :focus-visible { outline:3px solid #d95e4f; outline-offset:3px; } @media (min-width:768px) { .cards { grid-template-columns:repeat(2,minmax(0,1fr)); } } @media (min-width:1100px) { .cards { grid-template-columns:repeat(3,minmax(0,1fr)); } }

Pas à pas

  1. Testez aux largeurs 320, 375, 768 et 1440 px.
  2. Vérifiez les liens, menus, focus, contraste, tailles de caractères et images.
  3. Vérifiez que les boutons ont un texte explicite, pas seulement « Cliquer ici ».
  4. Sur mobile, assurez-vous que la navigation peut s’ouvrir et se fermer au clavier.
  5. Consignez deux défauts trouvés et leurs corrections.

Livrable

Une vidéo courte ou quatre captures avant/après, un thème versionné et une page de vérification responsive.

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. Quel est le fallback d’un thème classique ?
2. Quelle fonction crée le contexte de The Loop ?
3. Où afficher les Hooks de fin de page ?
4. Quel fichier du thème est prioritaire pour une page d’accueil statique personnalisée ?
5. Quelles fonctions doivent être présentes pour les scripts injectés en fin de page ?

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