Module 4Administrer un site à l'aide d'un CMS
Chapitre 16 sur 17
Manipuler les outils avancés d'un CMS
Extensions, SEO, sécurité, sauvegardes, WP-CLI, API REST et première extension.
- ≈ 115 min
- 5 leçons
- 1 exercice
- TP
Module 4Administrer un site à l'aide d'un CMS
Chapitre 16 sur 17
Extensions, SEO, sécurité, sauvegardes, WP-CLI, API REST et première extension.
Objectifs
Avec ce chapitre, tu sauras…
Leçon 1
Une extension (plugin) ajoute une fonctionnalité au site, sans modifier le cœur. Installation : Extensions > Ajouter (catalogue wordpress.org/plugins) ou envoi d'un .zip, puis Activer. Critères : mise à jour récente, compatible avec ta version, nombre d'installations actives, notes, support. Chaque extension est du code exécuté sur ton serveur : le moins possible, et supprimer celles qui sont désactivées.
| Besoin | Exemples d'extensions |
|---|---|
| référencement (SEO) | Yoast SEO, Rank Math |
| formulaires | Contact Form 7, WPForms |
| sécurité | Wordfence, Solid Security |
| sauvegardes | UpdraftPlus |
| cache et performance | WP Super Cache, LiteSpeed Cache |
| boutique en ligne | WooCommerce |
| multilingue (arabe, français) | Polylang, WPML |
| anti-spam | Akismet, Antispam Bee |
Leçon 2
Leçon 3
| Mesure | Comment |
|---|---|
| mettre à jour le cœur, les thèmes et les extensions | Tableau de bord > Mises à jour ; mises à jour automatiques des correctifs de sécurité |
| identifiants forts | pas de compte admin, mots de passe longs, double authentification (extension) |
| limiter les tentatives de connexion | extension de sécurité |
| interdire l'éditeur de fichiers | define('DISALLOW_FILE_EDIT', true); dans wp-config.php |
| désactiver le débogage en production | define('WP_DEBUG', false); |
Leçon 4
Leçon 5
1Une sauvegarde complète contient la base et…
2Pour interdire la modification des fichiers depuis l'administration…
3add_action sert à…
4L'URL de l'API REST des articles est…
5esc_html() protège contre…
6Pour changer l'URL du site dans toute la base, on utilise…
L'essentiel du chapitre
admin, 2FA, limite de connexion, DISALLOW_FILE_EDIT, WP_DEBUG false, rôles, HTTPS, droits des fichiers, sources sûres.wp-content, planifiées, externes, restauration testée (3-2-1) ; Export/Import XML ; Santé du site ; WP-CLI (core, plugin, db export, search-replace)./wp-json/wp/v2/posts ; extension : en-tête Plugin Name, hooks add_action / add_filter, register_post_type, add_shortcode, échappement esc_html / esc_url.| moindre privilège | rôles adaptés (chapitre 14) |
| HTTPS | certificat SSL (Let's Encrypt) |
| droits des fichiers | dossiers 755, fichiers 644, wp-config.php 600 ou 640 |
| sources sûres | thèmes et extensions du catalogue officiel ou d'éditeurs connus, jamais « nulled » |
SEO (Search Engine Optimization) : permaliens lisibles, un titre et une méta-description par contenu (avec Yoast ou Rank Math), une seule balise h1, des titres h2/h3 structurés, le texte alternatif des images, un plan du site XML (/wp-sitemap.xml, fourni par WordPress), HTTPS, un site rapide et adapté au mobile.
Performances : extension de cache (pages HTML pré-générées), images compressées au format WebP et chargement différé (natif), thème léger, peu d'extensions, hébergement avec PHP récent. Mesure avec PageSpeed Insights (Core Web Vitals).
Une sauvegarde complète = la base de données + le dossier wp-content (et wp-config.php). Avec UpdraftPlus : sauvegarde planifiée (base chaque jour, fichiers chaque semaine) vers un stockage externe (Google Drive, Dropbox) ; tester la restauration. Règle 3-2-1 : 3 copies, 2 supports, 1 hors site.
wp-config.php, puis remplacer l'ancienne URL par la nouvelle (WP-CLI search-replace, qui gère les données sérialisées).WP-CLI gère WordPress en ligne de commande, comme Artisan pour Laravel :
wp core download --locale=fr_FR
wp core install --url=blog.kitab.test --title="Blog Kitab" --admin_user=fatima --admin_email=fatima@kitab.ma
wp plugin install updraftplus --activate
wp core update && wp plugin update --all
wp db export sauvegarde.sql
wp search-replace 'http://blog.kitab.test' 'https://blog.kitab.ma'
wp user create karim karim@kitab.ma --role=authorWordPress expose ses contenus en JSON : GET /wp-json/wp/v2/posts (articles), /wp-json/wp/v2/pages, /wp-json/wp/v2/categories. La boutique Laravel peut ainsi afficher les derniers articles du blog :
use Illuminate\Support\Facades\Http;
$articles = Http::get('https://blog.kitab.ma/wp-json/wp/v2/posts', ['per_page' => 3])
->json(); // tableau d'articles : $articles[0]['title']['rendered'], ['link'], ['date']...Une extension est un fichier PHP dans wp-content/plugins/ avec un en-tête. WordPress fonctionne par hooks : des actions (add_action : exécuter du code à un moment donné) et des filtres (add_filter : modifier une valeur). Cette extension crée un type de contenu personnalisé « Événement » (rencontres d'auteurs) et un code court (shortcode) :
<?php
/*
* Plugin Name: Kitab Événements
* Description: Les rencontres et dédicaces de la librairie Kitab.
* Version: 1.0
*/
if (! defined('ABSPATH')) {
exit; // empêche l'appel direct du fichier
}
add_action('init', function () {
register_post_type('evenement', [
'labels' => ['name' => 'Événements', 'singular_name' => 'Événement'],
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-calendar-alt',
'supports' => ['title', 'editor', 'thumbnail'],
'show_in_rest' => true, // éditeur de blocs et API REST
'rewrite' => ['slug' => 'evenements'],
]);
});
// [kitab_evenements nombre="3"] : liste des prochains événements
add_shortcode('kitab_evenements', function ($atts) {
$atts = shortcode_atts(['nombre' => 3], $atts);
$evenements = get_posts(['post_type' => 'evenement', 'numberposts' => (int) $atts['nombre']]);
$html = '<ul class="kitab-evenements">';
foreach ($evenements as $e) {
$html .= '<li><a href="' . esc_url(get_permalink($e)) . '">' . esc_html(get_the_title($e)) . '</a></li>';
}
return $html . '</ul>';
});esc_html et esc_url échappent les sorties (anti-XSS), comme {{ }} dans Blade. Après activation, aller dans Réglages > Permaliens et cliquer sur « Enregistrer » pour que l'URL /evenements/ fonctionne.
(1) Installe un formulaire de contact, une extension SEO (titre et méta-description de 3 articles) et UpdraftPlus (sauvegarde planifiée). (2) Applique les mesures de sécurité de la section 3 et note les recommandations de Santé du site. (3) Installe l'extension kitab-evenements, crée 3 événements et insère le code court dans la page d'accueil. (4) Dans Kitab (Laravel), affiche les 3 derniers articles du blog sur la page d'accueil avec Http::get.