Cours WordPress — Semaine 5

FORMATION WORDPRESS · MODULE 05/08 · 10 HEURES

Créer un plugin WordPress métier, sans toucher au thème

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 →

Le thème présente le site ; le plugin porte ses données métier. Cette semaine, vous créez l’extension de l’agence pour gérer des réalisations, services et secteurs, puis apprenez à sécuriser les réglages.

Votre livrable professionnel

Plugin ZIP activable ; types de contenus Réalisations/Services ; taxonomie Secteurs ; réglage administrable et sécurisé ; données conservées après changement de thème.

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 plugin et enregistrer deux CPT

Construire le premier plugin Un plugin se place dans wp-content/plugins/nom-du-plugin/ . WordPress identifie son fichier principal grâce à un en-tête PHP. Exemple agency-portfolio-manager.php…

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

ÉTAPE 02 / 05

Ajouter taxonomie et métadonnées

Ajouter Services et la taxonomie Secteurs La taxonomie relie des contenus à des termes administrables. Un CPT possède son propre écran ; show_in_rest facilite l’utilisation de Gutenberg et de…

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

ÉTAPE 03 / 05

Créer les réglages administrateur

Un réglage administrable via Settings API L’API Settings gère l’enregistrement et la validation des options. Les réglages et les contrôles de droit doivent être côté serveur. Exemple compact…

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

ÉTAPE 04 / 05

Sécuriser droits, nonces et sorties

Sécuriser les formulaires et les sorties Une donnée reçue depuis un formulaire n’est jamais réputée sûre. Validez/sanitisez à l’entrée, vérifiez les droits et échappez au moment de l’affichage.…

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

ÉTAPE 05 / 05

Tester activation et conservation des données

Tester installation, désactivation et compatibilité Une vraie livraison plugin prévoit au minimum activation/désactivation, conservation des contenus, permissions et absence d’erreur fatale.…

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

Créer le plugin et enregistrer deux CPT

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 01

Vous partez de zéro ? Suivez chaque clic.

Un plugin ajoute une fonctionnalité au site sans dépendre du thème. Nous allons créer un plugin d’exercice minimal, puis l’activer comme une extension ordinaire.

Où aller ?

wp-content/plugins/agency-lab-plugin/agency-lab-plugin.php ; WordPress → Extensions.

Manipulation expliquée pas à pas
  1. 01
    Dans wp-content/plugins du WordPress de test, créez le dossier agency-lab-plugin.
  2. 02
    Créez agency-lab-plugin.php et ajoutez l’en-tête d’extension ci-dessous.
  3. 03
    Dans WordPress → Extensions → Extensions installées, repérez « Agency Lab Plugin » et activez-le.
  4. 04
    Vérifiez qu’aucune erreur PHP n’apparaît.
  5. 05
    Ajoutez une fonction déclenchée sur init pour observer le fonctionnement des Hooks.
Exemple à observer ou reproduire

<?php /** * Plugin Name: Agency Lab Plugin * Description: Extension métier d'exercice. * Version: 0.1.0 */ if (!defined('ABSPATH')) exit; add_action('init', function () { // Le point de démarrage des fonctionnalités. });

✓ Résultat attendu

L’extension apparaît dans la liste et peut être activée/désactivée sans supprimer les articles.

Si cela ne fonctionne pas

Si le plugin est invisible, vérifiez le fichier PHP principal, son emplacement et l’en-tête Plugin Name.

À retenir

Plugin : module de fonctionnalité indépendant du design du thème.

Construire le premier plugin

Un plugin se place dans wp-content/plugins/nom-du-plugin/. WordPress identifie son fichier principal grâce à un en-tête PHP.

Exemple agency-portfolio-manager.php

<?php /** * Plugin Name: Atelier Portfolio Manager * Version: 1.0.0 * Requires PHP: 8.1 */ defined( 'ABSPATH' ) || exit; add_action( 'init', function (): void { register_post_type( 'agency_project', [ 'label' => 'Réalisations', 'public' => true, 'show_in_rest' => true, 'supports' => [ 'title', 'editor', 'thumbnail' ], 'has_archive' => true, 'rewrite' => [ 'slug' => 'realisations' ], ] ); } );

Pas à pas

  1. Créez le dossier plugin et son fichier principal.
  2. Copiez le code et installez-le sur staging via un ZIP.
  3. Activez-le depuis Extensions ; le menu « Réalisations » doit apparaître.
  4. Créez deux réalisations avec une image et une description.
  5. Visitez /realisations/ et régénérez les permaliens dans l’admin si besoin.

À éviter : créer les CPT essentiels dans functions.php : ils cessent d’être enregistrés si le client change de thème.

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

Ajouter taxonomie et métadonnées

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 02

Vous partez de zéro ? Suivez chaque clic.

Un Custom Post Type permet de gérer des contenus spécifiques comme « Réalisations » ou « Services » au lieu de les confondre avec les articles du blog.

Où aller ?

Plugin → agency-lab-plugin.php ; WordPress → Réalisations ; Réglages → Permaliens.

Manipulation expliquée pas à pas
  1. 01
    Dans le plugin de test, utilisez register_post_type() sur le Hook init pour déclarer agency_project.
  2. 02
    Définissez des labels lisibles, show_in_rest à true et supports title, editor et thumbnail.
  3. 03
    Désactivez puis réactivez le plugin si nécessaire, puis réenregistrez Réglages → Permaliens après la première déclaration.
  4. 04
    Dans WordPress, créez deux réalisations avec titre, description et image.
  5. 05
    Verifiez l’existence de leur URL publique et de la rubrique d’administration.
Exemple à observer ou reproduire

add_action('init', function () { register_post_type('agency_project', [ 'label' => 'Réalisations', 'public' => true, 'has_archive' => true, 'show_in_rest' => true, 'supports' => ['title', 'editor', 'thumbnail'] ]); });

✓ Résultat attendu

Une rubrique Réalisations est disponible dans WordPress et ses entrées ont des pages consultables.

Si cela ne fonctionne pas

Si la liste fonctionne dans l’admin mais l’URL affiche 404, contrôlez has_archive/public/rewrite puis réenregistrez les permaliens.

À retenir

CPT : type de contenu personnalisé. show_in_rest : rend le type accessible aux interfaces WordPress compatibles.

Ajouter Services et la taxonomie Secteurs

La taxonomie relie des contenus à des termes administrables. Un CPT possède son propre écran ; show_in_rest facilite l’utilisation de Gutenberg et de l’API.

Exemple à ajouter au Hook init

register_post_type( 'agency_service', [ 'label' => 'Services', 'public' => true, 'show_in_rest' => true, 'supports' => [ 'title', 'editor', 'thumbnail' ], 'rewrite' => [ 'slug' => 'services-agence' ], ] ); register_taxonomy( 'agency_sector', [ 'agency_project' ], [ 'label' => 'Secteurs', 'public' => true, 'show_in_rest' => true, 'hierarchical' => true, ] );

Pas à pas

  1. Ajoutez le type « Services » et la taxonomie « Secteurs » dans le même Hook.
  2. Créez deux services et trois réalisations publiées.
  3. Ajoutez les termes « Commerce » et « Industrie » à vos réalisations.
  4. Vérifiez le rendu dans l’administration et les liens des archives.
  5. Modifiez le thème de test : les données métier doivent rester administrables.

Résultat

Les contenus métiers ne disparaissent pas de la base lors d’un changement de thème.

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

Créer les réglages administrateur

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 03

Vous partez de zéro ? Suivez chaque clic.

Une taxonomie classe les réalisations ; une métadonnée ajoute une information spécifique à une réalisation, par exemple une ville ou un numéro de projet.

Où aller ?

Plugin → register_taxonomy/register_post_meta ; WordPress → Réalisations.

Manipulation expliquée pas à pas
  1. 01
    Dans le plugin, créez la taxonomie agency_sector associée au CPT agency_project.
  2. 02
    Ajoutez deux termes de démonstration : « Bureaux » et « Commerces ».
  3. 03
    Dans l’administration, associez les deux réalisations à leur secteur.
  4. 04
    Pour la métadonnée « ville », privilégiez register_post_meta avec show_in_rest, type et authorization_callback adaptés.
  5. 05
    Affichez la ville seulement après l’avoir validée et échappée dans le template.
Exemple à observer ou reproduire

add_action('init', function () { register_taxonomy('agency_sector', ['agency_project'], [ 'label'=>'Secteurs', 'public'=>true, 'hierarchical'=>true, 'show_in_rest'=>true ]); });

✓ Résultat attendu

Chaque réalisation possède un secteur et un champ de données métier cohérent.

Si cela ne fonctionne pas

Ne mettez pas des données confidentielles dans une métadonnée REST publique ; réfléchissez au rôle et à la visibilité avant publication.

À retenir

Taxonomie : système de classification. Métadonnée : champ additionnel lié à un contenu.

Un réglage administrable via Settings API

L’API Settings gère l’enregistrement et la validation des options. Les réglages et les contrôles de droit doivent être côté serveur.

Exemple compact

add_action( 'admin_init', function (): void { register_setting( 'atelier_options', 'atelier_cards_count', [ 'type' => 'integer', 'sanitize_callback' => function ( $value ) { return max( 1, min( 24, absint( $value ) ) ); }, 'default' => 6, ] ); } );

Pas à pas

  1. Ajoutez une page admin à l’aide de add_options_page().
  2. Affichez un formulaire method="post" action="options.php" avec settings_fields( 'atelier_options' ).
  3. Créez un champ nombre utilisant get_option( 'atelier_cards_count', 6 ).
  4. Testez 0, 12 puis 99 et vérifiez respectivement 1, 12 puis 24.
  5. Avec un compte Abonné, vérifiez qu’il n’est pas autorisé à administrer ce réglage.

Résultat

Le paramètre est borné entre 1 et 24 et reste enregistré après rechargement.

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

Sécuriser droits, nonces et sorties

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 04

Vous partez de zéro ? Suivez chaque clic.

La Settings API permet d’enregistrer des préférences du plugin. C’est un domaine différent du contenu des Pages : les réglages concernent le fonctionnement du site.

Où aller ?

Plugin → Hooks admin_menu et admin_init ; WordPress → Réglages → Options du plugin.

Manipulation expliquée pas à pas
  1. 01
    Dans le plugin, ajoutez une page de réglages à partir de add_options_page sur admin_menu.
  2. 02
    Dans admin_init, déclarez un réglage agency_cards_count avec register_setting().
  3. 03
    Vérifiez que l’utilisateur a manage_options pour modifier les réglages.
  4. 04
    Ajoutez une fonction de validation qui borne la valeur entre 1 et 24.
  5. 05
    Testez la sauvegarde avec un compte administrateur puis tentez d’accéder au réglage avec un compte Abonné.
Exemple à observer ou reproduire

function agency_cards_sanitize($value) { return max(1, min(24, absint($value))); }

✓ Résultat attendu

Un administrateur peut sauver une valeur valide, un utilisateur non autorisé ne peut pas la modifier.

Si cela ne fonctionne pas

Un nonce réduit les risques CSRF mais ne remplace jamais current_user_can() ; vérifiez toujours les capacités.

À retenir

Settings API : mécanisme WordPress d’enregistrement des options. Capability : permission d’un compte.

Sécuriser les formulaires et les sorties

Une donnée reçue depuis un formulaire n’est jamais réputée sûre. Validez/sanitisez à l’entrée, vérifiez les droits et échappez au moment de l’affichage.

Exemple d’écriture réservée à l’admin

if ( ! current_user_can( 'manage_options' ) ) { wp_die( 'Accès interdit', '', [ 'response' => 403 ] ); } check_admin_referer( 'atelier_save' ); $titre = isset( $_POST['titre'] ) ? sanitize_text_field( wp_unslash( $_POST['titre'] ) ) : ''; echo esc_html( $titre );

Pas à pas

  1. Créez un petit formulaire admin avec wp_nonce_field( 'atelier_save' ).
  2. Testez l’envoi valide, puis l’envoi sans nonce (doit échouer).
  3. Testez avec un compte sans droit et vérifiez le refus.
  4. Essayez un texte contenant du HTML ; sa sortie doit être échappée.
  5. Documentez pourquoi nonce et permission ne sont pas équivalents.

À retenir : pour le formulaire Contact public, utilisez une extension fiable ou développez un endpoint sécurisé complet (validation, nonce adapté, anti-spam, confidentialité, e-mail et contrôles serveur).

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

Tester activation et conservation des données

↖ Revenir au parcours

MODE DÉBUTANT · ÉTAPE 05

Vous partez de zéro ? Suivez chaque clic.

Une extension professionnelle conserve les données métier même quand on change de thème ou qu’on la désactive temporairement.

Où aller ?

WordPress → Extensions ; Apparence → Thèmes ; Réalisations.

Manipulation expliquée pas à pas
  1. 01
    Créez une réalisation, une catégorie Secteurs et un réglage.
  2. 02
    Désactivez le plugin depuis Extensions et observez que les contenus ne sont plus disponibles dans les menus de gestion.
  3. 03
    Réactivez-le et vérifiez que les contenus réapparaissent sans devoir les recréer.
  4. 04
    Changez temporairement le thème du site de test ; vérifiez que les contenus métier subsistent.
  5. 05
    Verifiez l’absence de notices PHP en staging et sauvegardez le ZIP versionné du plugin.

Exemple concret : Livrable : plugin ZIP, captures des menus CPT et tableau de tests après réactivation.

✓ Résultat attendu

Le même contenu est encore présent après désactivation/réactivation et changement de thème.

Si cela ne fonctionne pas

Ne supprimez pas les tables/contenus dans le Hook de désactivation. La suppression définitive doit être une opération séparée et explicite.

À retenir

Désactivation : arrêt de l’exécution, distinct de la désinstallation et de la suppression des données.

Tester installation, désactivation et compatibilité

Une vraie livraison plugin prévoit au minimum activation/désactivation, conservation des contenus, permissions et absence d’erreur fatale.

Protocole

  1. Activez le plugin depuis un ZIP sur un staging isolé.
  2. Créez 3 réalisations et 2 services ; ajoutez des catégories « Secteurs ».
  3. Vérifiez les permaliens, puis changez de thème de test : le menu admin demeure.
  4. Désactivez le plugin : les tables WordPress contiennent toujours les contenus, même si le CPT n’est plus exposé.
  5. Réactivez-le : les entrées doivent redevenir accessibles.
  6. Essayez de modifier une option depuis un compte sans droits : action refusée.
  7. Préparez une sauvegarde avant chaque mise à jour.

Preuve attendue

Journal de tests PASS/FAIL, capture des CPT, ZIP versionné, explication des contrôles de permissions.

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. Un nonce remplace-t-il la vérification des droits ?
2. Quelle fonction enregistre un type de contenu ?
3. Quel contrôle vérifie une capacité utilisateur ?
4. Pour garder les Réalisations après un changement de thème, où déclarer leur CPT ?
5. Une requête administrateur munie d’un nonce dispense-t-elle de contrôler les permissions ?

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