# WP Moderne > Tutoriels, analyses et retours d’expérience pour développeurs et agences WordPress : FSE, blocs, Elementor, performance, sécurité, headless et IA. Blog francophone écrit par des développeurs WordPress pour des développeurs, intégrateurs et agences. Chaque article existe aussi en Markdown : ajoutez « .md » à son URL (sans barre oblique finale). - Auteur : WordPress Développement — https://www.wpmoderne.fr/author/clement/ - Sitemap : https://www.wpmoderne.fr/wp-sitemap.xml - Flux RSS : https://www.wpmoderne.fr/feed/ ## Guides de référence - [Les hooks WordPress expliqués : actions, filtres et cycle de vie](https://www.wpmoderne.fr/hooks-wordpress.md): Comprendre add_action, add_filter, les priorités et le cycle de vie des hooks WordPress : la référence complète pour débuter et pour s'y retrouver au quotidien. - [L’histoire de WordPress : de b2 à WordPress 7, les grandes étapes](https://www.wpmoderne.fr/histoire-de-wordpress.md): De b2/cafelog en 2001 à WordPress 7, retour sur deux décennies de versions, de choix techniques et de communauté qui ont façonné le web. - Contact : https://www.wpmoderne.fr/contact/ ## Lexique Définitions en français des notions de WordPress et du développement web (379 entrées) : https://www.wpmoderne.fr/lexique/ ## Accessibilité Sites WordPress accessibles : RGAA, WCAG, thèmes, blocs et formulaires utilisables par tous. - [Notation d’avis clients accessible pour un artisan indépendant](https://www.wpmoderne.fr/accessibilite/notation-avis-clients-accessible-artisan-independant.md): Afficher une note en étoiles ne suffit jamais à transmettre l'information à tout le monde. Snippet complet pour un système de notation lisible, saisissable et sans dépendance à la seule couleur. - [Un registre de décisions d’accessibilité au format ADR, daté et justifié](https://www.wpmoderne.fr/accessibilite/registre-decisions-accessibilite-format-adr-date-justifie.md): Un choix d'accessibilité non daté ni tracé finit presque toujours par être défait par erreur, des mois plus tard, faute d'un registre consultable et à jour. - [Sous-titres générés par IA relus manuellement : la checklist avant publication](https://www.wpmoderne.fr/accessibilite/sous-titres-ia-checklist-relecture-manuelle.md): Un sous-titrage automatique fait gagner un temps considérable, à condition qu'il ne devienne jamais la version définitive publiée sans relecture. Liste de contrôle avant mise en ligne. - [Gravity Forms et la validation en temps réel : un message d’erreur invisible](https://www.wpmoderne.fr/accessibilite/gravity-forms-validation-temps-reel-erreur-invisible.md): Depuis l'introduction de la validation en temps réel dans Gravity Forms, un champ peut afficher une erreur au moment de la saisie sans qu'aucune technologie d'assistance ne la signale. Correctif… - [Architecture d’un design system accessible dès les tokens de theme.json](https://www.wpmoderne.fr/accessibilite/architecture-design-system-accessible-tokens-theme-json.md): Un design system accessible ne se rattrape pas au niveau des composants. Il se construit dès la couche de tokens de theme.json : espacements, focus, typographie, mouvement. - [Checklist d’accessibilité pour l’onboarding d’un développeur WordPress](https://www.wpmoderne.fr/accessibilite/checklist-onboarding-developpeur-wordpress-accessibilite.md): Une liste courte de réflexes à intégrer dès les premiers commits d'un nouvel arrivant, pour éviter les erreurs d'accessibilité les plus fréquentes sans attendre une formation complète. - [Documenter un patron d’interaction accessible réutilisable par toute une équipe](https://www.wpmoderne.fr/accessibilite/documenter-patron-interaction-accessible-equipe.md): Décrire un patron d'interaction accessible comme une définition explicite, vérifiable par une machine, plutôt que comme une simple recommandation écrite qu'un agent générateur peut ignorer. - [Ce que change concrètement le regroupement de focus imbriqué](https://www.wpmoderne.fr/accessibilite/regroupement-focus-imbrique-changements-concrets.md): Une piste en cours d'expérimentation dans les navigateurs propose de gérer nativement la navigation par flèches dans des groupes de contrôles imbriqués. Cas d'usage sur un formulaire à sections. - [eslint-plugin-jsx-a11y contre une revue manuelle pour un bloc Gutenberg](https://www.wpmoderne.fr/accessibilite/eslint-plugin-jsx-a11y-revue-manuelle-bloc-gutenberg.md): Attraper une erreur d'accessibilité avant même le commit change la donne pour une équipe qui développe des blocs personnalisés. Comparatif entre lint automatisé et revue de code manuelle. - [Capacités déclarées pour les agents : premier contrôle d’accessibilité](https://www.wpmoderne.fr/accessibilite/capacites-declarees-agents-controle-accessibilite.md): L'Abilities API arrivée avec WordPress 6.9 décrit ce qu'un agent peut faire avant de le faire. De quoi vérifier l'accessibilité d'une action avant qu'un agent ne l'exécute. - [Un score RGAA qui régresse après une mise à jour automatique de plugin](https://www.wpmoderne.fr/accessibilite/score-rgaa-regression-mise-a-jour-plugin.md): Le site n'a pas été modifié par l'équipe, et pourtant le score RGAA a chuté de dix points en une nuit. L'enquête a mené tout droit à une mise à jour automatique. - [Un an après l’European Accessibility Act : bilan sur le web français](https://www.wpmoderne.fr/accessibilite/bilan-un-an-european-accessibility-act.md): Un an après l'entrée en application de la directive européenne, quel bilan pour les sites e-commerce et les développeurs WordPress ? Entre attentisme et vrais chantiers d'audit. - Toute la catégorie : https://www.wpmoderne.fr/categorie/accessibilite/ ## Astuces Astuces courtes, snippets et solutions éprouvées au quotidien. - [sanitize_key et sanitize_title : la nuance qui évite un identifiant mal formé](https://www.wpmoderne.fr/tips/sanitize-key-sanitize-title-nuance-identifiant-bien-forme.md): Deux fonctions de nettoyage produisent parfois un résultat identique sur un texte simple, mais divergent nettement dès qu'accents ou espaces s'en mêlent. - [Rechercher et trier la médiathèque par métadonnées personnalisées](https://www.wpmoderne.fr/tips/rechercher-trier-mediatheque-metadonnees-personnalisees.md): Étendez la requête AJAX de la médiathèque pour filtrer les médias par un champ personnalisé, comme un numéro de référence ou un crédit photo. - [Estimer le temps de réponse avant qu’un praticien confirme un rendez-vous](https://www.wpmoderne.fr/tips/estimer-temps-reponse-confirmation-praticien.md): Donner une visibilité au patient sur un cabinet à trois cents praticiens sans surcharger l'équipe d'appels de relance. - [Basculer rapidement entre le connecteur Brevo et l’ancien connecteur HubSpot](https://www.wpmoderne.fr/tips/basculer-connecteur-brevo-ancien-hubspot.md): Permettre à l'équipe marketing de comparer deux connecteurs en parallèle avant de couper l'ancien définitivement. - [Distinguer la dernière modification d’un article de sa date de publication initiale](https://www.wpmoderne.fr/tips/distinguer-derniere-modification-article-date-initiale.md): Une mention « mis à jour le » séparée de la date d'origine renforce la fraîcheur perçue d'un contenu, sans avoir à réécrire l'historique de publication. - [Notifier l’équipe éditoriale quand un article dépasse un nombre de vues donné](https://www.wpmoderne.fr/tips/notifier-equipe-article-depasse-nombre-vues-donne.md): Repérer un article qui décolle sans attendre le rapport hebdomadaire d'un outil d'analytics externe : un compteur maison et un email suffisent. - [Nettoyer un compte utilisateur avant de le désactiver, sans rien perdre au passage](https://www.wpmoderne.fr/tips/nettoyer-compte-utilisateur-avant-desactiver-sans-tout-perdre.md): Retirer l'accès d'un collaborateur qui quitte un projet ne s'improvise pas. Voici la checklist des éléments à vérifier avant toute suppression de compte. - [Un rappel avant suppression d’un compte donateur inactif depuis deux ans](https://www.wpmoderne.fr/tips/rappel-suppression-compte-donateur-inactif.md): Éviter une perte de données irréversible sans relance préalable, sur un fichier de deux cent mille donateurs. - [Un indicateur de dernière purge Cloudflare réussie dans l’administration](https://www.wpmoderne.fr/tips/indicateur-derniere-purge-cloudflare-reussie.md): Rassurer l'équipe éditoriale que le cache a bien été vidé après une publication, sur un site à fort trafic. - [Masquer les widgets atomiques instables d’Elementor V4 aux clients non avertis](https://www.wpmoderne.fr/tips/masquer-widgets-instables-elementor-v4-clients.md): Limiter l'accès à certains éléments récents tant que l'équipe ne les maîtrise pas encore en production. - [Supprimer en masse les comptes utilisateurs indésirables en toute sécurité](https://www.wpmoderne.fr/tips/supprimer-masse-comptes-utilisateurs-spam-securite.md): Identifiez les inscriptions de spam accumulées sur plusieurs années et supprimez-les par WP-CLI ou SQL, en réattribuant proprement leurs contenus. - [Ajouter des champs au formulaire d’inscription WordPress](https://www.wpmoderne.fr/tips/ajouter-champs-formulaire-inscription-wordpress.md): Enrichissez wp-login.php?action=register avec des champs supplémentaires, validez-les et enregistrez-les au bon moment, sans extension d'adhésion complète. - Toute la catégorie : https://www.wpmoderne.fr/categorie/tips/ ## Blocs Gutenberg Création de blocs sur mesure : block.json, @wordpress/scripts, Interactivity API, block bindings. - [Vingt blocs enregistrés dans vingt fichiers sans registre central](https://www.wpmoderne.fr/blocs/vingt-blocs-vingt-fichiers-sans-registre-central.md): Symptômes de maintenance d'un plugin où chaque bloc s'enregistre indépendamment sans point d'entrée commun, et méthode de centralisation appliquée. - [WP_Query et fields => ids pour des suggestions croisées de bloc plus légères](https://www.wpmoderne.fr/blocs/wp-query-fields-ids-suggestions-croisees-bloc.md): Réduire le poids d'une requête de suggestions d'offres similaires en ne récupérant que les identifiants avant un second passage ciblé sur les données utiles. - [Elementor V4 ou bloc Gutenberg pour 300 000 pages : le comparatif chiffré](https://www.wpmoderne.fr/blocs/elementor-v4-gutenberg-comparatif-300000-pages.md): Tableau de mesures de temps de rendu entre Elementor V4 et une architecture de blocs Gutenberg natifs, sur un même jeu de 300 000 pages générées automatiquement. - [Un bloc e-learning à 60 000 apprenants : notre cache croisé rôle et cours](https://www.wpmoderne.fr/blocs/bloc-elearning-cache-role-cours.md): Retour chiffré sur une stratégie de cache croisant rôle utilisateur et cours suivi, pour un bloc dynamique livré à une plateforme de formation à très fort trafic. - [WordPress 7.0 et les blocs : PHP 8.4 minimum, la checklist de préparation](https://www.wpmoderne.fr/blocs/wordpress-7-0-blocs-php-8-4-checklist.md): Liste de contrôle commentée des motifs de code incompatibles avec le seuil minimal de PHP 8.4 exigé à l'approche de WordPress 7.0, pour les blocs dynamiques hérités. - [WordPress 7.0 pour les développeurs de blocs : ce qui change](https://www.wpmoderne.fr/blocs/wordpress-7-0-developpeurs-blocs-nouveautes.md): Évolutions de l'éditeur et des APIs de blocs apportées par WordPress 7.0 : ce qu'il faut effectivement retester sur des blocs personnalisés déjà en production. - [Douze points à vérifier avant qu’un bloc ne parte en production](https://www.wpmoderne.fr/blocs/douze-points-verifier-bloc-avant-production.md): La checklist qu'une agence applique avant de livrer un bloc à un client autonome, pour fiabiliser la livraison finale sans repasser derrière plusieurs fois. - [Un tableau de bord Sentry par bloc pour un parc de sites : notre mise en place](https://www.wpmoderne.fr/blocs/sentry-dashboard-erreurs-par-bloc.md): Construction d'un tableau de bord Sentry regroupant les erreurs par bloc maison, pour centraliser le suivi d'une agence qui opère plusieurs dizaines de sites. - [Migrer 200 blocs d’agence vers wp_register_block_metadata_collection](https://www.wpmoderne.fr/blocs/migrer-blocs-wp-register-block-metadata-collection.md): Retour d'expérience sur la migration d'un registre de 200 blocs d'agence vers la collection de métadonnées introduite en 2024, gain de chargement mesuré à l'appui. - [Un bloc fonctionne en local mais casse en prod après minification](https://www.wpmoderne.fr/blocs/bloc-casse-prod-apres-minification.md): Un identifiant généré dynamiquement côté JavaScript entrait en collision une fois les assets minifiés agressivement en production, un bug invisible en local. - [Revue de code d’un bloc avant production : notre checklist en 20 points](https://www.wpmoderne.fr/blocs/revue-code-bloc-checklist-20-points.md): block.json complet, sécurité du rendu, i18n, accessibilité, performance : la checklist utilisée en agence avant tout passage en production d'un bloc personnalisé. - [La différence entre un attribut de bloc et une donnée liée par Block Bindings](https://www.wpmoderne.fr/blocs/difference-attribut-bloc-donnee-block-bindings.md): Pourquoi un attribut de bloc et une valeur connectée par Block Bindings ne stockent pas la donnée au même endroit, et ce que cela change concrètement pour un contenu. - Toute la catégorie : https://www.wpmoderne.fr/categorie/blocs/ ## E-commerce WooCommerce et boutiques WordPress : catalogue, tunnel de commande, paiement, performance et extensions e-commerce. - [Facturer des missions de recrutement par jalons sous WooCommerce](https://www.wpmoderne.fr/ecommerce/facturation-jalons-recrutement-woocommerce.md): Un cabinet de recrutement veut encaisser sa mission en trois temps, liés à l'avancement réel du processus plutôt qu'à un simple découpage calendaire. Voici le montage WooCommerce retenu. - [Rétrospective chiffrée : ce qu’a coûté chaque montée de version majeure de WooCommerce](https://www.wpmoderne.fr/ecommerce/retrospective-cout-montees-version-woocommerce.md): Compilation d'heures moyennes constatées par montée de version majeure de WooCommerce depuis 2020, pour aider les agences à budgéter leur maintenance long terme. - [Se préparer à la facturation électronique obligatoire 2026 sur une boutique](https://www.wpmoderne.fr/ecommerce/facturation-electronique-obligatoire-2026-boutique.md): La réforme de facturation électronique française approche pour les boutiques B2B. Voici l'architecture d'export à prévoir vers une plateforme de dématérialisation. - [Personnaliser les classes globales de couleur et typographie d’une page produit](https://www.wpmoderne.fr/ecommerce/personnaliser-classes-globales-couleur-typographie-page-produit.md): Une page produit qui respecte enfin la charte graphique du client, sans surcharge CSS bricolée : la démarche complète avec les classes globales de theme.json. - [Comprendre le cycle de vie complet d’une commande WooCommerce, du panier au remboursement](https://www.wpmoderne.fr/ecommerce/cycle-vie-commande-woocommerce-panier-remboursement.md): Cartographie des statuts, hooks et tables impliqués à chaque étape d'une commande WooCommerce, pour les développeurs qui prennent en main leur première boutique. - [Une mutuelle vend des garanties à la carte avec WooCommerce Product Add-ons](https://www.wpmoderne.fr/ecommerce/mutuelle-garanties-a-la-carte-product-add-ons.md): Une mutuelle veut proposer un contrat de base souscriptible en ligne, avec des options de garantie que l'adhérent choisit lui-même selon son profil. WooCommerce Product Add-ons suffit à ce montage. - [Vérifications avant de connecter un partenaire logistique en lecture au catalogue](https://www.wpmoderne.fr/ecommerce/checklist-connecter-partenaire-logistique-catalogue-woocommerce.md): Liste commentée des vérifications de périmètre et de journalisation à faire avant d'ouvrir un accès en lecture au catalogue WooCommerce à un partenaire logistique. - [Architecture d’exposition sécurisée du catalogue WooCommerce à un serveur MCP](https://www.wpmoderne.fr/ecommerce/architecture-exposition-securisee-catalogue-woocommerce-mcp.md): Exposer un catalogue à un agent externe en lecture seule semble sans risque. L'architecture qui le garantit réellement demande pourtant plusieurs couches distinctes. - [Advanced Coupons contre un système de règles de remise maison sous WooCommerce](https://www.wpmoderne.fr/ecommerce/advanced-coupons-regles-remise-maison-woocommerce.md): Extension ou code sur mesure pour des règles de remise complexes sous WooCommerce ? Comparatif honnête entre Advanced Coupons et un moteur de règles maison. - [Réserve limitée en primeur viticole vendue par lots sous WooCommerce](https://www.wpmoderne.fr/ecommerce/reserve-viticole-primeur-lots-woocommerce.md): Un domaine veut vendre sa cuvée en primeur par lots de six bouteilles, avec un plafond strict par client pour préserver l'équité entre acheteurs fidèles. Voici le montage retenu. - [Un agent MCP qui annule des commandes WooCommerce sans instruction](https://www.wpmoderne.fr/ecommerce/agent-mcp-annule-commandes-woocommerce-sans-instruction.md): Aucun utilisateur n'avait demandé l'annulation. Pourtant, six commandes se sont retrouvées annulées la même nuit. Voici comment nous avons remonté le fil de cet incident. - [Yoast SEO et WooCommerce SEO : des balises canonical dupliquées sur les fiches](https://www.wpmoderne.fr/ecommerce/yoast-seo-woocommerce-seo-canonical-dupliques.md): Deux balises canonical concurrentes sur une même fiche produit ne sont pas une coïncidence. Voici comment identifier la source du doublon et désactiver la bonne extension. - Toute la catégorie : https://www.wpmoderne.fr/categorie/ecommerce/ ## Éditeur de site (FSE) Full Site Editing : éditeur de site, templates, template parts, patterns et styles globaux. - [Message « Ce gabarit référence un modèle introuvable » après WordPress 7.0](https://www.wpmoderne.fr/fse/gabarit-modele-introuvable-wordpress-70.md): Symptôme, diagnostic et correctif pour une erreur d'identifiant de template apparue sur un thème hybride ancien après la montée vers WordPress 7.0. - [Oublié cinq ans dans les styles globaux : ce qu’un audit révèle d’un token](https://www.wpmoderne.fr/fse/oublie-cinq-ans-styles-globaux-audit-token.md): Un token de couleur créé à l'origine d'un theme.json, jamais renommé ni retiré depuis. Ce qu'un audit sur un projet ancien apprend sur la longévité réelle d'une gouvernance par design tokens. - [Trop d’identités visuelles empilées tuent la cohérence d’un thème](https://www.wpmoderne.fr/fse/antipatterns-trop-variations-style.md): Un client a empilé les variations de style au fil des demandes ponctuelles. Symptômes d'un thème devenu incohérent et méthode de nettoyage sans tout casser. - [WordPress 7.0 et l’éditeur de site : ce qui change pour les développeurs](https://www.wpmoderne.fr/fse/wordpress-70-editeur-site-developpeurs.md): Franchir un numéro de version majeur ne veut pas dire tout réécrire : voici ce qui, côté éditeur de site, mérite vraiment un test avant mise en production. - [La recette d’un mega-menu dans le bloc Navigation, sans plugin tiers](https://www.wpmoderne.fr/fse/mega-menu-bloc-navigation-sans-plugin.md): Livrer un mega-menu riche uniquement avec les blocs natifs de navigation et des sous-listes de blocs Groupe, sans dépendance externe. Le problème, le snippet, les variantes. - [Éditeur de site pour collectivité : bilan RGAA après cinq ans de templates](https://www.wpmoderne.fr/fse/bilan-rgaa-cinq-ans-templates-fse.md): Cinq ans d'audits RGAA sur des sites publics en éditeur de site font ressortir les mêmes points de blocage. Retour critique sur ce qui revient le plus souvent, template après template. - [Éditeur de site et multisite : partager templates et styles entre sites](https://www.wpmoderne.fr/fse/editeur-site-multisite-partager-templates.md): Un réseau multisite ne synchronise rien nativement entre ses sites : templates, patterns et styles restent, par défaut, propres à chaque site du réseau. - [Ce que change la spéculative loading pour un site en éditeur de site](https://www.wpmoderne.fr/fse/speculative-loading-editeur-site.md): La préconnexion et le préchargement spéculatif introduits en 6.8 changent concrètement le ressenti de navigation sur un site FSE. Comprendre le mécanisme sans plonger dans la configuration fine. - [PHP 8.4 et les templates d’archive : un avertissement de dépréciation discret](https://www.wpmoderne.fr/fse/php-84-templates-archive-avertissement-depreciation.md): Un cas précis de dépréciation PHP 8.4 repéré dans le code qui gère le fallback d'archive d'un thème hybride ancien, invisible tant que le mode debug n'est pas activé. - [Éditeur de site et Sentry en 2026 : un dashboard d’erreurs par template](https://www.wpmoderne.fr/fse/sentry-dashboard-erreurs-par-template.md): Centraliser les erreurs de plusieurs sites FSE dans un seul outil ne suffit pas si elles restent indifférenciées. Construction d'un tableau de bord Sentry regroupant les erreurs par template. - [WordPress 7.0 resserre les permissions du Site Editor : la revue à refaire](https://www.wpmoderne.fr/fse/wordpress-70-permissions-site-editor.md): WordPress 7.0 affine le contrôle d'accès à l'éditeur de site par capacité plutôt que par rôle global. Ce que cela change concrètement pour les sites multi-rôles. - [Template, part, pattern, variation, section style : le glossaire du FSE](https://www.wpmoderne.fr/fse/glossaire-fse-template-part-pattern-variation.md): Cinq mots qui reviennent sans cesse dans la documentation de l'éditeur de site, souvent employés l'un pour l'autre alors qu'ils désignent des mécanismes bien distincts. - Toute la catégorie : https://www.wpmoderne.fr/categorie/fse/ ## Elementor Elementor et Elementor Pro : widgets sur mesure, éditeur V4, atomic elements, Theme Builder. - [Checklist de fin de vie pour un vieux plugin Elementor tiers abandonné](https://www.wpmoderne.fr/elementor/checklist-fin-vie-plugin-elementor-abandonne.md): La procédure pour repérer et remplacer un addon Elementor tiers qui n'est plus maintenu, sans toucher aux widgets natifs de l'éditeur. - [Les antipatterns d’un design system Elementor V4 construit sans gouvernance](https://www.wpmoderne.fr/elementor/antipatterns-design-system-elementor-v4-sans-gouvernance.md): Les dérives observées quand une agence structure ses classes globales à plusieurs développeurs sans qu'aucune arbitre les nouvelles classes créées. - [Elementor V4 pour multisite de 500 sites : partager composants et variables](https://www.wpmoderne.fr/elementor/elementor-v4-multisite-500-sites-composants-variables.md): Arborescence type et méthode pour partager composants et variables globales de l'éditeur V4 entre cinq cents sites d'un même réseau multisite, sans duplication. - [Elementor V4 ou éditeur de site sur 300 000 pages : comparatif chiffré](https://www.wpmoderne.fr/elementor/elementor-v4-vs-editeur-site-300000-pages-comparatif.md): Mesures de temps de rendu comparées entre l'éditeur V4 d'Elementor et l'éditeur de site natif de WordPress, sur un même jeu de 300 000 pages générées. - [Elementor V4, Bricks ou éditeur natif en 2026 : comparatif chiffré](https://www.wpmoderne.fr/elementor/elementor-v4-bricks-editeur-natif-2026-comparatif.md): Une même maquette construite dans trois outils : temps de production, poids de page, INP mesuré et effort de maintenance comparés sans parti pris. - [Dupliquer un Kit entier pour une couleur : l’antipattern qui coûte cher](https://www.wpmoderne.fr/elementor/dupliquer-kit-entier-couleur-antipattern.md): Copier un Kit complet plutôt que d'exposer une variable globale multiplie la maintenance à la première évolution de charte, souvent sans que personne ne s'en rende compte tout de suite. - [Interactions et animations dans Elementor V4 : le nouveau système](https://www.wpmoderne.fr/elementor/interactions-animations-elementor-v4-nouveau-systeme.md): Configurer les interactions atomiques d'Elementor V4 (entrée, scroll, survol), leur coût réel en performance et les précautions d'accessibilité à prendre. - [Classes globales contre Local Styles dans Elementor V4 : bien choisir](https://www.wpmoderne.fr/elementor/classes-globales-contre-local-styles-v4.md): Clarifier pour un développeur qui débute sur l'éditeur atomique quand utiliser une classe globale plutôt qu'un style local, sans traiter la migration des anciens styles V3. - [WordPress 7.0 et Elementor V4 : PHP 8.4 minimum, ce qu’un kit doit corriger](https://www.wpmoderne.fr/elementor/wordpress-7-elementor-v4-php-84-checklist.md): Checklist des motifs de code PHP incompatibles avec le seuil minimal de PHP 8.4 exigé par WordPress 7.0, à corriger dans un Kit Elementor hérité avant la mise à jour. - [Elementor V4 et blocs Gutenberg sur une même page : ce qui se passe réellement](https://www.wpmoderne.fr/elementor/elementor-v4-gutenberg-meme-page-cohabitation.md): Deux systèmes de rendu de contenu sur une seule page transitoire : comment l'éditeur V4 d'Elementor et les blocs natifs de Gutenberg cohabitent techniquement, sans détour stratégique. - [wp-env pour prévisualiser un Kit Elementor V4 sans bloquer le serveur partagé](https://www.wpmoderne.fr/elementor/wp-env-previsualiser-kit-elementor-v4.md): Monter un environnement wp-env jetable pour tester un Kit Elementor V4 avant livraison, plutôt que de mobiliser le serveur de recette partagé. - [Les variables de style d’Elementor V4 : ce qu’elles changent pour un Kit](https://www.wpmoderne.fr/elementor/variables-style-elementor-v4-kit.md): Les variables introduites par l'éditeur atomique remplacent progressivement les couleurs et polices globales, sans imposer de tout reconstruire d'un coup. - Toute la catégorie : https://www.wpmoderne.fr/categorie/elementor/ ## Extensions Développement et revue d'extensions : architecture, hooks, API REST, bonnes pratiques. - [Un agenda pour 300 praticiens : dimensionner une extension de planning médical](https://www.wpmoderne.fr/extensions/extension-cabinet-medical-300-praticiens-agenda.md): Un groupement de santé de 300 praticiens fait exploser les limites d'un module d'agenda pensé pour un cabinet isolé. Comment repenser stockage et requêtes sans réécrire toute la logique métier. - [Checklist avant de confier le support d’une extension à une agence tierce](https://www.wpmoderne.fr/extensions/checklist-support-extension-agence-tierce.md): Déléguer l'assistance ne veut pas dire vendre son code en marque blanche. Avant la passation, une série de vérifications garantit que l'agence tierce peut vraiment répondre aux tickets. - [Nommer les capacités personnalisées d’une extension écrite à plusieurs mains](https://www.wpmoderne.fr/extensions/nommer-capacites-personnalisees-extension-plusieurs-mains.md): gerer_factures ou mon_extension_gerer_factures ? Une convention de nommage des capacités personnalisées évite les doublons quand plusieurs développeurs travaillent sur le même code. - [Antipatterns d’une extension multi-tenant sur un parc de 500 sites](https://www.wpmoderne.fr/extensions/antipatterns-extension-multi-tenant-500-sites.md): Sur un grand réseau de collectivités, les erreurs d'isolation entre sites ne se voient pas tout de suite : elles apparaissent le jour où un site hérite silencieusement des données d'un autre. - [Postmark ou Amazon SES pour l’envoi transactionnel d’une extension à fort volume](https://www.wpmoderne.fr/extensions/postmark-amazon-ses-envoi-transactionnel-extension.md): Au-delà de quelques dizaines de milliers d'e-mails transactionnels par mois, le choix du service d'envoi cesse d'être un détail de configuration pour devenir un vrai arbitrage. - [Value objects contre tableaux associatifs dans une extension moderne](https://www.wpmoderne.fr/extensions/value-objects-contre-tableaux-associatifs-extension-moderne.md): Un tableau à clés magiques semble pratique tant que l'extension reste petite. Voici où un objet immuable évite des bugs qu'il finit toujours par provoquer. - [Un plugin_action_links qui disparaît après un simple renommage de dossier](https://www.wpmoderne.fr/extensions/plugin-action-links-disparait-renommage-dossier.md): Le lien de réglages a toujours fonctionné, jusqu'à ce que le dossier de l'extension change de nom lors d'un renommage de marque. Diagnostic d'un chemin resté en dur. - [Exporter une facturation associative au format FEC, sans module comptable](https://www.wpmoderne.fr/extensions/exporter-facturation-associative-format-fec.md): Générer un fichier des écritures conforme demande surtout de respecter un format texte strict, pas un moteur comptable complet. - [Reprendre la maintenance d’une extension abandonnée : l’audit avant de s’engager](https://www.wpmoderne.fr/extensions/reprendre-maintenance-extension-abandonnee-audit-avant-engagement.md): Accepter de maintenir un plugin tiers laissé à l'abandon engage plus qu'il n'y paraît. Une grille de vérification avant de signer, pas après le premier incident. - [Passer une extension de PHP 8.4 à 8.5 : le script de vérification qu’on utilise](https://www.wpmoderne.fr/extensions/migrer-extension-php-8-4-vers-8-5-script-verification.md): Avant de recommander à un client de monter son serveur en PHP 8.5, un script maison balaie le code de l'extension à la recherche des usages qui méritent une vérification manuelle. - [WordPress 6.9 et les extensions : ce que l’Abilities API touche vraiment](https://www.wpmoderne.fr/extensions/wordpress-6-9-extensions-abilities-api-ce-qui-est-touche.md): L'arrivée de l'Abilities API dans le cœur ne réécrit pas l'architecture d'une extension existante. Voici ce qu'un mainteneur doit réellement vérifier. - [Checklist avant de dépublier une extension abandonnée sur WordPress.org](https://www.wpmoderne.fr/extensions/checklist-depublier-extension-abandonnee-wordpress-org.md): Prévenir les utilisateurs actifs, documenter une alternative, archiver le dépôt : les étapes d'un retrait propre plutôt que d'un simple silence. - Toute la catégorie : https://www.wpmoderne.fr/categorie/extensions/ ## Headless & API WordPress headless, API REST, WPGraphQL, front-ends découplés. - [NIS2 et l’API REST d’un headless hébergé en France : ce qui change](https://www.wpmoderne.fr/headless/nis2-api-rest-headless-france-ce-qui-change.md): Le périmètre de la directive NIS2 appliqué à une infrastructure headless hébergée en France, avec un cas d'usage pour un site d'infrastructure locale sensible. - [Un front headless affichait un contenu jamais publié dans WordPress : débogage](https://www.wpmoderne.fr/headless/front-headless-contenu-jamais-publie-isr-debogage.md): Une revalidation ISR mal configurée servait aux visiteurs un contenu de brouillon jamais publié. Méthode de diagnostic et correctif du paramètre de prévisualisation. - [Un an après avoir choisi Paddle plutôt que Stripe pour un headless SaaS](https://www.wpmoderne.fr/headless/paddle-plutot-stripe-headless-saas-un-an-apres.md): Retour d'expérience sur le choix de Paddle comme processeur de paiement d'un SaaS consommant WordPress en headless pour son contenu marketing, un an après. - [Coûts d’hébergement d’un WordPress classique face à un headless à trafic égal](https://www.wpmoderne.fr/headless/couts-hebergement-wordpress-classique-headless-trafic-egal.md): Chiffres réels sur trois projets comparables : coût serveur WordPress, coût de build et d'hébergement front, coût du CDN, pour trancher le débat au-delà des arguments techniques. - [WordPress 7.0 et un front headless d’association fédérale](https://www.wpmoderne.fr/headless/wordpress-7-0-front-headless-association-federale.md): Les nouveautés de WordPress 7.0 classées par impact réel pour un front découplé fédérant de nombreuses structures locales, sans entrer dans la migration des anciens thèmes. - [Sécuriser la clé HubSpot utilisée par 300 fronts headless](https://www.wpmoderne.fr/headless/securiser-cle-hubspot-partagee-300-fronts-headless.md): Checklist de cloisonnement d'une même intégration CRM partagée par de nombreux fronts indépendants, pour qu'une fuite sur l'un n'expose pas les autres. - [Un oEmbed personnalisé affiche un aperçu de contenu externe headless](https://www.wpmoderne.fr/headless/oembed-personnalise-apercu-contenu-externe-headless.md): Comment ajouter un fournisseur oEmbed personnalisé pour afficher un aperçu riche d'une source externe dans un front WordPress découplé, étape par étape. - [WordPress 7.0 et l’API REST : ce qui change pour les fronts découplés](https://www.wpmoderne.fr/headless/wordpress-7-0-api-rest-fronts-decouples.md): À l'arrivée d'une nouvelle version majeure, la méthode qui protège un front headless des régressions silencieuses sur l'API REST. - [Scaleway ou Infomaniak pour héberger l’API d’un WordPress headless en Europe](https://www.wpmoderne.fr/headless/scaleway-infomaniak-heberger-api-wordpress-headless-europe.md): Comparatif de deux hébergeurs européens pour la partie API d'un projet headless soumis à des exigences de souveraineté des données. - [Next.js, Astro ou Nuxt pour WordPress headless en 2026 : les chiffres](https://www.wpmoderne.fr/headless/nextjs-astro-nuxt-wordpress-headless-2026-chiffres.md): Le même site WordPress reconstruit trois fois : temps de build, poids des pages, Core Web Vitals et coût d'hébergement mesurés côte à côte. - [Un site headless conçu pour les agents IA autant que pour les visiteurs humains](https://www.wpmoderne.fr/headless/site-headless-concu-agents-ia-visiteurs-humains.md): Architecture d'un projet qui expose délibérément un schéma structuré et des points d'accès pensés pour être consommés par des agents autant que par un front React classique. - [Sécuriser les abilities d’un agent sur un front headless relié à Stripe](https://www.wpmoderne.fr/headless/securiser-abilities-agent-front-headless-stripe.md): Checklist de permissions pour un front découplé ouvrant des abilities WordPress 6.9 à un agent qui orchestre paiement Stripe et emailing transactionnel. - Toute la catégorie : https://www.wpmoderne.fr/categorie/headless/ ## Hébergement & serveurs Choisir, configurer et exploiter l'infrastructure WordPress : nginx, PHP-FPM, bases de données, CDN, supervision. - [Load balancer managé ou HAProxy maison : le comparatif de coût pour une agence](https://www.wpmoderne.fr/hebergement/load-balancer-manage-ou-haproxy-maison-comparatif-cout.md): Après un incident coûteux sur un répartiteur maison, une agence chiffre sérieusement le passage à une offre managée. Comparatif des coûts réels d'exploitation entre les deux approches. - [Checklist de conformité serveur avant l’ouverture d’un site public RGAA](https://www.wpmoderne.fr/hebergement/checklist-conformite-serveur-ouverture-site-rgaa.md): Un site de collectivité doit répondre à des exigences serveur souvent oubliées dans les audits d'accessibilité classiques : temps de réponse et disponibilité. - [Maquettes 3D d’architecte externalisées hors du serveur WordPress](https://www.wpmoderne.fr/hebergement/maquettes-3d-architecte-externalisees-hors-serveur-wordpress.md): Des fichiers de maquette numérique trop lourds pour un hébergement web classique imposent une architecture de stockage à part. - [Edge computing et WordPress : exécuter du PHP au plus près, mythe ou réalité](https://www.wpmoderne.fr/hebergement/edge-computing-wordpress-php-peripherie-mythe-realite.md): Des offres promettent du PHP en périphérie comme pour le JavaScript. Ce qui fonctionne vraiment aujourd'hui pour WordPress et ce qui reste marketing. - [Durcir la configuration serveur avant la mise en ligne d’un site d’assurance](https://www.wpmoderne.fr/hebergement/durcir-configuration-serveur-mise-en-ligne-site-assurance.md): Une checklist serveur à vérifier point par point avant d'ouvrir au public un site du secteur assurantiel, particulièrement exposé. - [Migrer les DNS de cent domaines clients vers un nouveau registrar sans coupure](https://www.wpmoderne.fr/hebergement/migrer-dns-cent-domaines-nouveau-registrar-sans-coupure.md): Rapatrier la gestion DNS de tout un portefeuille de domaines clients vers un registrar unique demande une méthode de bascule en lot, domaine par domaine, sans coupure visible. - [WP_MEMORY_LIMIT ou memory_limit PHP : lequel arbitre en cas de fatal error](https://www.wpmoderne.fr/hebergement/wp-memory-limit-memory-limit-php-fatal-error.md): Deux réglages qui portent presque le même nom, mais qui n'agissent ni au même niveau ni avec la même priorité. - [Contrat cloud résilié sans préavis : le cas qui a changé notre hébergement](https://www.wpmoderne.fr/hebergement/contrat-cloud-resilie-sans-preavis-cas-hebergement.md): Un fournisseur cloud a fermé un compte d'agence du jour au lendemain, invoquant une clause générique de conditions d'utilisation. Récit de l'incident et des mesures prises depuis. - [« disk quota exceeded » qui n’apparaît que sur une des trois répliques d’un cluster de fichiers](https://www.wpmoderne.fr/hebergement/disk-quota-exceeded-une-seule-replique-cluster-fichiers.md): Diagnostic d'une erreur de quota disque incohérente entre les nœuds d'un cluster de fichiers, révélant un déséquilibre de réplication passé inaperçu. - [« Un cluster protège toujours contre les pannes » : le cas où la réplication a propagé l’incident](https://www.wpmoderne.fr/hebergement/cluster-protege-toujours-pannes-replication-propage-incident.md): Retour d'expérience sur une corruption de données répliquée sur tous les nœuds d'un cluster avant d'être détectée, et ce que cela change à la confiance dans la redondance. - [HTTP/3 et QUIC sous nginx pour WordPress : ce que ça change vraiment](https://www.wpmoderne.fr/hebergement/http3-quic-nginx-wordpress-ce-qui-change.md): HTTP/3 s'appuie sur QUIC plutôt que TCP, avec des promesses de latence réduite sur mobile. Après l'avoir activé sur plusieurs sites WordPress, voici un bilan mesuré, sans effet d'annonce. - [Panne de résolveur DNS chez un hébergeur : diagnostiquer sans accès serveur](https://www.wpmoderne.fr/hebergement/panne-resolveur-dns-hebergeur-diagnostiquer-sans-acces.md): Un site devient injoignable pour certains visiteurs sans qu'aucun journal serveur ne montre d'anomalie. Diagnostic centré sur la résolution DNS récursive côté hébergeur. - Toute la catégorie : https://www.wpmoderne.fr/categorie/hebergement/ ## IA & MCP IA appliquée à WordPress : Abilities API, MCP Adapter, agents, génération de contenu. - [Syndic de copropriété : un agent rédige des réponses types, jamais de dépense](https://www.wpmoderne.fr/ia-mcp/syndic-copropriete-agent-reponses-types-sans-depense.md): Un syndic encadre un agent limité à la rédaction de réponses types aux copropriétaires, avec validation humaine systématique avant tout engagement financier. - [WordPress 7.0 déclare ses premières abilities : un socle commun pour les agents](https://www.wpmoderne.fr/ia-mcp/wordpress-7-0-abilities-socle-commun-agents.md): Nouveautés classées par impact sur les abilities désormais fournies nativement par le cœur de WordPress 7.0, et ce qui reste encore du ressort des extensions tierces. - [Le RAG ne suffit plus : agents multi-outils sur WordPress depuis 2023](https://www.wpmoderne.fr/ia-mcp/rag-ne-suffit-plus-agents-multi-outils.md): Trois ans après l'engouement pour la recherche augmentée, la bascule vers des agents multi-outils capables d'agir change l'architecture attendue d'un site. - [Garde-fous RGPD pour un agent IA relié à HubSpot sur un site de santé](https://www.wpmoderne.fr/ia-mcp/garde-fous-rgpd-agent-ia-hubspot-site-sante.md): Quelles données un agent connecté à un CRM peut-il légitimement voir quand ces données concernent la santé d'un patient ? Checklist des limitations à imposer avant toute connexion. - [Un pipeline de tests de régression automatisés pour les abilities d’un site](https://www.wpmoderne.fr/ia-mcp/pipeline-tests-regression-abilities.md): Mise en place d'une suite qui rejoue des scénarios d'agent contre les abilities d'un site à chaque déploiement, pour repérer une régression avant un agent réel. - [Un agent IA propose de restructurer un menu selon le comportement visiteur](https://www.wpmoderne.fr/ia-mcp/agent-ia-restructure-navigation-comportement.md): Cas d'un test où un agent analyse les données d'analytics et propose une réorganisation de menu, systématiquement validée par un humain avant application. - [WordPress client MCP : quand l’admin appelle des outils externes](https://www.wpmoderne.fr/ia-mcp/wordpress-client-mcp-outils-externes.md): Une architecture inverse où l'administration WordPress consomme des serveurs MCP tiers plutôt que d'en exposer un. Sécurité, cas d'usage et limites concrètes. - [Une ability mal décrite trompait systématiquement l’agent qui l’appelait](https://www.wpmoderne.fr/ia-mcp/ability-mal-decrite-trompe-agent.md): Une description trop vague poussait un agent à invoquer une ability dans des contextes inappropriés. Méthode pour rédiger des descriptions sans ambiguïté. - [Pourquoi documenter un agent IA comme un collègue plutôt que comme un script](https://www.wpmoderne.fr/ia-mcp/documenter-agent-ia-comme-collegue-plutot-que-script.md): Écrire une fiche de poste, avec rôle, limites et escalade, change en pratique la façon dont une équipe conçoit et fait évoluer un agent IA, plus qu'une simple liste de fonctions. - [Coûts d’un agent IA autonome face à un prestataire humain pour la maintenance](https://www.wpmoderne.fr/ia-mcp/couts-agent-ia-autonome-vs-prestataire-humain.md): Chiffres réels comparant le coût mensuel d'un agent qui applique les mises à jour et corrige les régressions mineures face à un forfait de maintenance classique. - [Pourquoi limiter le nombre d’abilities données à un agent sur un site associatif](https://www.wpmoderne.fr/ia-mcp/limiter-nombre-abilities-agent-site-associatif.md): La surface d'attaque d'un agent IA croît avec chaque ability déclarée. Définition du risque, fonctionnement réel et illustration sur le cas d'une petite association culturelle. - [WordPress 7.0 et l’IA : ce qui arrive dans le cœur pour les développeurs](https://www.wpmoderne.fr/ia-mcp/wordpress-7-ia-developpeurs.md): Les briques IA prévues ou déjà livrées avec WordPress 7.0 et leur impact concret pour les développeurs d'extensions et de thèmes. - Toute la catégorie : https://www.wpmoderne.fr/categorie/ia-mcp/ ## Multilingue Sites WordPress en plusieurs langues : WPML, Polylang, multisite, traduction, SEO international. - [Un syndicat de 500 communes mutualisées, chacune dans sa langue régionale](https://www.wpmoderne.fr/multilingue/syndicat-500-communes-langues-regionales.md): Cinq cents communes sur une infrastructure mutualisée, chacune publiant dans sa langue ou son dialecte régional propre : une architecture inédite à cette échelle. - [WordPress 7.0 et la traduction du cœur : ce que les mainteneurs doivent revoir](https://www.wpmoderne.fr/multilingue/wordpress-7-traduction-du-coeur.md): WordPress 7.0 modifie des chaînes du cœur logiciel, un chantier de traduction communautaire distinct de l'impact déjà documenté sur les extensions multilingues. - [Contribuer une chaîne traduite au cœur de WordPress : le circuit complet](https://www.wpmoderne.fr/multilingue/contribuer-chaine-traduite-coeur-wordpress-circuit.md): Du repérage d'une chaîne mal traduite jusqu'à son intégration officielle, voici le trajet complet qu'emprunte une contribution de traduction au cœur de WordPress. - [Migrer un site multilingue vers WordPress multisite pour séparer les langues](https://www.wpmoderne.fr/multilingue/migrer-multilingue-vers-multisite-par-langue.md): Un site Polylang devenu trop lourd a dû être éclaté en un réseau multisite par langue. Voici la méthode de migration technique retenue pour ce projet. - [Coopérative viticole transfrontalière : l’œnotourisme traduit en quatre langues](https://www.wpmoderne.fr/multilingue/cooperative-viticole-transfrontaliere-oenotourisme-quatre-langues.md): Retour d'expérience sur la priorisation des contenus de visites de cave et de dégustations traduits en premier, pour une coopérative viticole ouverte à quatre langues. - [Pictogramme de contenu généré par IA affiché sans sa légende traduite](https://www.wpmoderne.fr/multilingue/pictogramme-ia-legende-non-traduite.md): L'icône qui signale un contenu généré par IA s'oublie rarement, mais sa légende textuelle, elle, reste souvent figée dans une seule langue sur les sites multilingues. - [Compatibilité Elementor V4 et WPML : ce que cassent les classes globales](https://www.wpmoderne.fr/multilingue/elementor-v4-wpml-classes-globales.md): « Les styles ne s'appliquent plus sur cette traduction » : un symptôme précis apparu avec l'architecture atomique d'Elementor V4 et son système de classes globales. - [Traduire une marketplace WooCommerce : ce que les plugins ne prévoient pas](https://www.wpmoderne.fr/multilingue/traduire-marketplace-woocommerce-multi-vendeurs.md): Une marketplace à plusieurs vendeurs indépendants a révélé que les extensions multilingues classiques ne couvrent pas ce cas. Voici les angles morts rencontrés et les contournements adoptés. - [Traduire les réponses d’un agent IA conversationnel multilingue](https://www.wpmoderne.fr/multilingue/traduire-agent-ia-conversationnel-multilingue.md): Un agent conversationnel branché sur le contenu du site doit répondre dans la langue du visiteur sans jamais mélanger les sources documentaires entre elles. - [Traduire un catalogue WooCommerce de 10 000 produits sans exploser le budget](https://www.wpmoderne.fr/multilingue/traduire-catalogue-woocommerce-10000-produits.md): Un catalogue immense à traduire en plusieurs langues avec un budget contraint impose de prioriser et d'automatiser une partie du travail. Voici la méthode retenue. - [Agent qui devine mal la langue avant même de router la question du visiteur](https://www.wpmoderne.fr/multilingue/agent-devine-mal-langue-avant-routage.md): Tutoriel pour brancher une détection de langue fiable en amont d'un agent conversationnel connecté à un site, plutôt que de la laisser deviner. - [Auditer un vieux site WPML avant reprise : ce qu’on trouve systématiquement](https://www.wpmoderne.fr/multilingue/auditer-vieux-site-wpml-reprise.md): Reprendre régulièrement des sites WPML anciens laissés par d'autres prestataires nous a appris à repérer les mêmes erreurs et dettes techniques presque à chaque fois. - Toute la catégorie : https://www.wpmoderne.fr/categorie/multilingue/ ## Outils & workflow WP-CLI, environnements locaux, Git, CI/CD, déploiement, Composer. - [Historiser les temps de build CI pour repérer un ralentissement lent et discret](https://www.wpmoderne.fr/outils/historiser-temps-build-ci-ralentissement.md): Un pipeline qui ralentit de quelques secondes à chaque changement passe inaperçu jusqu'à devenir pénible ; un graphique de suivi révèle la tendance à temps. - [Notre stack d’outillage WordPress en 2026, outil par outil](https://www.wpmoderne.fr/outils/notre-stack-outillage-wordpress-2026.md): Environnement local, build, qualité, intégration continue, déploiement et monitoring : ce que nous utilisons concrètement aujourd'hui sur nos projets, et pourquoi. - [Fly.io, Railway ou Render pour héberger un WordPress conteneurisé](https://www.wpmoderne.fr/outils/fly-io-railway-render-wordpress-conteneurise.md): Simplicité de mise en route, coût réel et limites de ces trois plateformes pour héberger un site WordPress professionnel conteneurisé. - [OpenTelemetry pour WordPress : tracer une requête de bout en bout](https://www.wpmoderne.fr/outils/opentelemetry-wordpress-tracer-requete.md): Instrumenter PHP et WordPress avec OpenTelemetry, exporter les traces vers un collecteur, et relier ce qui se passe côté front, côté PHP et côté base en une seule vue. - [HTTPS en local pour tous vos projets WordPress avec mkcert](https://www.wpmoderne.fr/outils/https-local-mkcert-wordpress.md): Générer une autorité de certification locale avec mkcert, émettre des certificats par projet et les brancher sur nginx, DDEV ou Docker, cookies sécurisés compris. - [WordPress 7.0 et le MCP Adapter du cœur : l’impact sur l’outillage d’agence](https://www.wpmoderne.fr/outils/wordpress-70-mcp-adapter-coeur-outillage-agence.md): L'intégration du MCP Adapter au cœur avec WordPress 7.0 rend-elle obsolète notre passerelle MCP maison, construite avant que le cœur ne s'en charge ? - [Woodpecker CI pour une petite agence qui veut garder la main sur son code](https://www.wpmoderne.fr/outils/woodpecker-ci-petite-agence-controle.md): Un moteur de CI léger et auto-hébergé convient à une petite équipe qui veut garder le contrôle de son infrastructure sans la lourdeur d'un outil plus ancien. - [Ce script de déploiement qui suppose toujours la même arborescence de projet](https://www.wpmoderne.fr/outils/script-deploiement-arborescence-supposee.md): Un script maison casse sur le premier projet à l'arborescence légèrement différente ; un antipattern récurrent en agence, avec sa correction concrète. - [« Rate limit exceeded » sur Algolia après une charge imprévue d’un média](https://www.wpmoderne.fr/outils/rate-limit-exceeded-algolia-charge-imprevue-media.md): Un pic de trafic soudain sur un site média a saturé le quota Algolia en quelques minutes. Diagnostic et repli d'urgence vers la recherche native. - [Bunny.net contre Cloudflare pour le CDN d’une boutique d’artisans en ligne](https://www.wpmoderne.fr/outils/bunny-net-cloudflare-cdn-boutique-artisans.md): Un plan gratuit généreux face à une facturation au gigaoctet transparente : comparatif entre Cloudflare et Bunny.net pour le CDN d'une boutique WooCommerce à petit budget. - [Kubernetes abandonné pour six sites WordPress : pourquoi nous sommes revenus](https://www.wpmoderne.fr/outils/kubernetes-abandonne-six-sites-wordpress.md): Retour d'expérience sur les coûts opérationnels réels qui ont fini par dépasser le bénéfice attendu pour une charge finalement modeste. - [Migrer un blog Blogger vers WordPress : conserver dates et commentaires](https://www.wpmoderne.fr/outils/migrer-blog-blogger-vers-wordpress-archives.md): Quinze ans de commentaires de lecteurs fidèles, à ne surtout pas perdre au passage. La méthode pour vérifier, étape par étape, que dates et commentaires survivent intacts à l'import WordPress. - Toute la catégorie : https://www.wpmoderne.fr/categorie/outils/ ## Performance Cache, Core Web Vitals, requêtes, opcache, optimisation front et back. - [WordPress 7.0 et la performance : ce qui change pour vos sites](https://www.wpmoderne.fr/performance/wordpress-7-0-performance-ce-qui-change.md): WordPress 7.0 arrive avec son lot d'optimisations et quelques points de vigilance côté performance. Tour d'horizon de ce qui a été mesuré avant la mise à jour de vos sites en production. - [hrtime() pour isoler le coût de chargement de chaque extension au démarrage](https://www.wpmoderne.fr/performance/hrtime-isoler-cout-chargement-extensions.md): Quarante extensions actives, un temps de démarrage qui traîne. Une méthode simple avec hrtime() isole, une par une, ce que chacune ajoute réellement. - [Sentry Profiling en continu : le budget CPU sur 90 extensions actives](https://www.wpmoderne.fr/performance/sentry-profiling-continu-budget-cpu-90-extensions.md): 90 extensions actives, un profiling continu activé pour tout surveiller, et une facture CPU qui grimpe plus vite que prévu. Où activer le profiling de Sentry sélectivement, et où s'en abstenir. - [Vérifier qu’un cache de page sert bien la bonne langue avant chaque campagne](https://www.wpmoderne.fr/performance/verifier-cache-bonne-langue-avant-campagne.md): Avant un pic de trafic multilingue, une série de vérifications évite qu'un visiteur reçoive une page en cache dans une langue qui n'est pas la sienne. - [Les nouveautés perf de WordPress 7.0 en bêta : ce qu’on a mesuré](https://www.wpmoderne.fr/performance/wordpress-7-0-beta-performance-mesures.md): Avant la sortie officielle, test des optimisations de performance annoncées pour la version 7.0 sur un environnement de pré-production, comparées à la version 6.9. - [Un tableau de bord Sentry et Cloudflare pour 150 sites clients](https://www.wpmoderne.fr/performance/tableau-bord-sentry-cloudflare-150-sites-clients.md): Prioriser les interventions sur un grand parc de sites clients suppose de voir, en un coup d'œil, où ça compte vraiment. Architecture d'un tableau de bord d'agence agrégeant Sentry Performance et… - [Un site figé pendant l’indexation d’un moteur de recherche interne](https://www.wpmoderne.fr/performance/site-fige-indexation-moteur-recherche-interne.md): Une réindexation complète lancée en pleine journée bloque le site pour les visiteurs. Diagnostic et découpage en lots planifiés hors heures de pointe. - [Optimiser un WordPress avant un bilan d’écoconception numérique en 2026](https://www.wpmoderne.fr/performance/optimiser-wordpress-avant-audit-ecoconception-2026.md): Un audit d'écoconception numérique programmé dans quelques semaines. Liste commentée des réglages de performance à vérifier en amont, du poids des pages au nombre de requêtes générées. - [Comparatif Algolia, Meilisearch et Typesense pour un site associatif](https://www.wpmoderne.fr/performance/comparatif-algolia-meilisearch-typesense-associatif.md): Coût, latence et simplicité d'intégration : trois moteurs de recherche affrontés sur un site fédérant plusieurs centaines d'associations locales, chacune avec son propre volume de contenu à indexer. - [Bascule HTTP/3 : un an de latence mesurée sur des sites vitrines d’artisans](https://www.wpmoderne.fr/performance/http3-early-hints-un-an-latence-sites-artisans.md): Un an après avoir activé HTTP/3 et les Early Hints sur un ensemble de sites vitrines d'artisans hébergés en mutualisé, les chiffres de latence permettent enfin un bilan chiffré et honnête. - [Action Scheduler face à une queue Redis pour les tâches lourdes](https://www.wpmoderne.fr/performance/action-scheduler-queue-redis-taches-lourdes-comparatif.md): Pour des traitements longs (export, synchronisation), comparatif entre Action Scheduler natif et une file Redis dédiée, avec mesures de débit sur un même volume de tâches. - [Estimer l’empreinte environnementale d’une page : octets ou requêtes serveur](https://www.wpmoderne.fr/performance/empreinte-environnementale-octets-ou-requetes-serveur.md): Deux méthodes populaires pour chiffrer l'impact environnemental d'une page web donnent des résultats très différents, et chacune ignore une partie du tableau. - Toute la catégorie : https://www.wpmoderne.fr/categorie/performance/ ## Sécurité Durcissement, nonces, capacités, échappement, sanitation, veille vulnérabilités. - [Une extension IA de génération de visuels qui exfiltre les images produites](https://www.wpmoderne.fr/securite/extension-ia-generation-visuels-exfiltre-images.md): Une extension générant des visuels par IA transmettait discrètement chaque image produite à un service tiers non déclaré, en plus du service annoncé dans sa documentation. - [Encadrer une route REST ouverte à un agent IA sans compte de service dédié](https://www.wpmoderne.fr/securite/encadrer-route-rest-ouverte-agent-ia-sans-compte-service-dedie.md): Un agent connecté en lecture-écriture directement via le compte d'un développeur hérite souvent de bien plus de droits qu'un compte de service n'en accorderait jamais. - [« Nonce verification failed » côté agent IA : la fenêtre de validité qu’un client MCP ignore](https://www.wpmoderne.fr/securite/nonce-verification-failed-agent-ia-fenetre-validite.md): Un nonce WordPress classique est pensé pour une interaction humaine rapide. Un client MCP asynchrone dépasse régulièrement cette fenêtre sans même s'en rendre compte. - [Six mois après une migration Wix, des identifiants encore actifs](https://www.wpmoderne.fr/securite/six-mois-apres-migration-wix-identifiants-encore-actifs.md): Un audit tardif découvre que les accès de l'ancienne plateforme n'ont jamais été révoqués après la bascule vers WordPress, six mois plus tôt. - [L’AI Act européen impose quoi aux extensions IA WordPress en 2026 : conformité](https://www.wpmoderne.fr/securite/ai-act-europeen-extensions-ia-wordpress-2026.md): Deux ans après l'entrée en application de l'AI Act, ce que les extensions intégrant de l'IA générative doivent concrètement documenter et journaliser pour rester conformes. - [Départ d’un prestataire : jetons, accès et abilities à révoquer systématiquement](https://www.wpmoderne.fr/securite/depart-prestataire-jetons-acces-abilities-a-revoquer.md): Quels accès survivent réellement au départ d'un prestataire technique ? Une liste exhaustive, incluant les abilities accordées à des agents IA, souvent oubliées dans ce type de transition. - [Un audit de 90 sites de santé : des intégrations jamais revues](https://www.wpmoderne.fr/securite/audit-90-sites-sante-integrations-jamais-revues.md): Un audit mené sur un ensemble de sites médicaux a listé les intégrations tierces connectées jamais réévaluées depuis leur mise en place. Checklist née de ce constat, applicable à tout parc similaire. - [Dix ans de credential stuffing sur wp-login.php : ce que le volume a vraiment changé](https://www.wpmoderne.fr/securite/dix-ans-credential-stuffing-wp-login.md): Les attaques automatisées contre wp-login.php n'ont rien de nouveau. Ce qui a changé en une décennie, c'est leur ampleur, leur vitesse et leur sophistication technique. - [Limiter l’embarquement d’un actif WordPress ailleurs avec Cross-Origin-Resource-Policy](https://www.wpmoderne.fr/securite/limiter-embarquement-actif-cross-origin-resource-policy.md): Un fichier statique sensible reste réutilisable par n'importe quel site tiers tant qu'aucun en-tête ne le précise. Cross-Origin-Resource-Policy referme cette porte simplement. - [Surveiller la sécurité de 150 sites : notre tableau de bord en 2026](https://www.wpmoderne.fr/securite/surveiller-securite-150-sites-tableau-de-bord-2026.md): Gérer la sécurité d'un site, c'est une discipline. Gérer celle de cent cinquante en parallèle en est une autre. Voici les indicateurs et la routine qui nous permettent de tenir le rythme. - [Signature et provenance des mises à jour : où en est WordPress en 2026](https://www.wpmoderne.fr/securite/signature-provenance-mises-a-jour-wordpress-2026.md): Contrairement à d'autres écosystèmes, WordPress ne signe pas cryptographiquement chacun de ses paquets de mise à jour. Voici ce qui existe aujourd'hui et ce que vous pouvez vérifier vous-même. - [fields => ids dans WP_Query pour réduire l’exposition d’une recherche](https://www.wpmoderne.fr/securite/fields-ids-wp-query-reduire-exposition-recherche.md): Une recherche interne qui renvoie des objets WP_Post complets expose souvent bien plus de métadonnées que ce que l'affichage final n'utilise réellement. - Toute la catégorie : https://www.wpmoderne.fr/categorie/securite/ ## SEO & GEO Référencement technique de WordPress : balisage, données structurées, indexation, maillage, et visibilité dans les moteurs IA. - [Checklist GEO 2026 pour un site WordPress institutionnel avant une refonte](https://www.wpmoderne.fr/seo/checklist-geo-2026-site-institutionnel-avant-refonte.md): Quelles vérifications techniques mener avant de basculer un site institutionnel sur une refonte, pour qu'il reste visible autant pour Google que pour les moteurs de réponse IA. - [Googlebot-Mobile face au Googlebot desktop : ce que change le user-agent](https://www.wpmoderne.fr/seo/googlebot-mobile-vs-desktop-user-agent.md): Confondre les deux user-agents de Googlebot conduit certains développeurs à filtrer ou tester leur site sur une base technique erronée. - [Maillage interne piloté par des étiquettes pour un groupe de presse locale](https://www.wpmoderne.fr/seo/maillage-interne-etiquettes-groupe-presse-locale.md): Schéma d'architecture de liens entre plusieurs titres de presse locale d'un même groupe, construit sur des étiquettes communes, sans dupliquer le contenu. - [GEO au-delà du llms.txt : ce qui rend vraiment un site WordPress citable](https://www.wpmoderne.fr/seo/geo-au-dela-llms-txt-site-citable.md): Le fichier llms.txt s'est répandu comme symbole du GEO, mais son effet réel reste incertain. Notre verdict, après plusieurs projets, sur ce qui compte vraiment pour être cité par une IA. - [Concevoir un WordPress crawlable aussi bien par Google que par une IA](https://www.wpmoderne.fr/seo/architecture-wordpress-crawlable-google-et-ia.md): Plutôt que de traiter le SEO et le GEO comme deux chantiers séparés, voici l'architecture retenue pour un site pensé dès le départ pour les deux publics de robots. - [Un audit de citations IA qui révèle un contenu jamais indexé par Google](https://www.wpmoderne.fr/seo/audit-citations-ia-contenu-jamais-indexe-google.md): Retour sur l'enquête menée après la découverte de pages citées par un moteur de réponse IA alors qu'elles n'ont jamais figuré dans l'index de Google, ni même été explorées par Googlebot. - [Plusieurs sites perdent leur plan de sitemaps après une mise à jour partagée](https://www.wpmoderne.fr/seo/sitemaps-perdus-mise-a-jour-partagee.md): Une même mise à jour de composant, déployée sur plusieurs sites gérés en parallèle, a fait disparaître leur index de sitemaps en une seule nuit. - [Désindexer automatiquement les fiches d’événements passés, sans suppression](https://www.wpmoderne.fr/seo/desindexer-fiches-evenements-passes-sans-suppression.md): Snippet pour une agence événementielle appliquant un noindex automatique aux fiches de dates révolues, sans jamais supprimer le contenu correspondant. - [Anticiper l’effet d’une refonte majeure du cœur sur la fréquence de crawl](https://www.wpmoderne.fr/seo/anticiper-refonte-coeur-frequence-crawl.md): Une montée de version majeure du cœur peut, sans qu'aucune fonctionnalité SEO ne soit directement en cause, modifier la façon dont les robots explorent un site. - [L’erreur de validation Schema.org « champ obligatoire manquant » sur un rich result](https://www.wpmoderne.fr/seo/erreur-validation-schema-champ-obligatoire-manquant.md): Quand un balisage généré automatiquement échoue à la validation pour un champ requis absent, la faute vient rarement du template : elle se cache plus haut dans le flux de données. - [Générer un balisage Schema.org adapté aux nouvelles exigences de citation IA](https://www.wpmoderne.fr/seo/schema-org-citation-moteurs-ia-2026.md): Les attentes de balisage évoluent avec les usages des moteurs de réponse. Voici un snippet PHP pour générer un Schema.org qui répond à ces nouvelles exigences de citation. - [GEO et données structurées : le balisage Schema.org que les moteurs de réponse retiennent](https://www.wpmoderne.fr/seo/geo-donnees-structurees-schema-org-moteurs-reponse.md): Face à la centaine de types Schema.org disponibles, quels sont ceux dont l'usage réel par les moteurs de réponse IA a pu être observé, et lesquels restent un pari sans retour mesurable. - Toute la catégorie : https://www.wpmoderne.fr/categorie/seo/ ## Tests Qualité du code : PHPUnit, tests E2E Playwright, PHPCS/WPCS, analyse statique PHPStan. - [Un audit de 300 tests hérités : combien testaient vraiment quelque chose ?](https://www.wpmoderne.fr/tests/audit-300-tests-herites-combien-utiles.md): Retour d'expérience sur l'analyse d'une suite ancienne, pour distinguer les tests qui protègent réellement le code de ceux qui ne font que passer sans assertion réelle. - [Ce qu’un test de smoke doit vérifier en trente secondes après un déploiement](https://www.wpmoderne.fr/tests/test-de-smoke-trente-secondes-apres-deploiement.md): Une liste volontairement courte de vérifications à exécuter juste après une mise en production, pour une équipe qui déploie plusieurs fois par jour sans repasser toute la suite complète. - [Onboarding sur une suite de tests WordPress : l’essentiel en une journée](https://www.wpmoderne.fr/tests/onboarding-suite-tests-wordpress-un-jour.md): Les commandes, conventions et pièges à transmettre à un nouvel arrivant pour qu'il puisse écrire un test utile dès sa première journée, sans réapprendre par ses propres erreurs. - [WordPress 7.0 : les changements de fixtures de test à anticiper](https://www.wpmoderne.fr/tests/wordpress-7-0-fixtures-test-anticiper.md): Ce qui évolue dans les classes de test fournies par le cœur avec WordPress 7.0, et l'impact concret sur une suite existante d'agence. - [Une suite de tests trois fois plus lente après une montée de version de PHP](https://www.wpmoderne.fr/tests/suite-tests-trois-fois-plus-lente-php.md): Un ralentissement soudain après une mise à jour de PHP peut venir de l'interpréteur, d'une extension chargée, ou d'une dépendance de test elle-même. Comment trier entre ces trois hypothèses. - [Elementor V4 atomique et ACF : quelle couverture de tests PHPUnit ajouter](https://www.wpmoderne.fr/tests/acf-editeur-atomique-elementor-v4-tests.md): Les éléments atomiques d'Elementor V4 changent la façon dont les champs ACF sont liés au rendu. Voici quoi tester sans réécrire toute la couverture existante. - [Changer de fournisseur CI en gardant vos scénarios de test intacts](https://www.wpmoderne.fr/tests/changer-fournisseur-ci-scenarios-tests-intacts.md): Changer de fournisseur d'intégration continue force souvent à réécrire toute la logique de test. Une séparation claire entre logique et configuration limite ce travail au strict minimum. - [WordPress 7.0 et la suite de tests : ce qui change pour vos tests](https://www.wpmoderne.fr/tests/wordpress-7-0-suite-tests.md): WordPress 7.0 fait évoluer sa suite de tests officielle et ses outils E2E de référence. Ce qui a changé concrètement pour vos suites PHPUnit et Playwright. - [Un runbook d’incident qui référence directement les tests à relancer](https://www.wpmoderne.fr/tests/runbook-incident-reference-tests-a-relancer.md): Plutôt qu'une liste de commandes génériques, un document d'incident renvoie vers des scénarios de test précis, capables de confirmer qu'un correctif a réellement résolu le problème. - [Un test de charge lancé trois jours avant le lancement : ce qu’on a appris](https://www.wpmoderne.fr/tests/test-charge-trois-jours-avant-lancement.md): Repousser systématiquement le test de charge à la dernière minute finit par coûter cher. Retour sur un test lancé trois jours avant un lancement et les décisions prises dans l'urgence qui a suivi. - [Checklist de tests avant de migrer un connecteur CRM vers Brevo](https://www.wpmoderne.fr/tests/checklist-tests-migration-connecteur-crm-brevo.md): Changer d'outil CRM ne se résume pas à changer une clé d'API. Voici la checklist qui vérifie que chaque champ et chaque scénario d'automatisation survit à la bascule vers Brevo. - [Tester une extension pour 200 000 donateurs : segmentation et temps de CI](https://www.wpmoderne.fr/tests/tester-extension-200000-donateurs-segmentation-ci.md): Une extension de gestion des dons doit segmenter 200 000 profils sans ralentir la CI à chaque merge. Voici comment mesurer et garder ce temps sous contrôle. - Toute la catégorie : https://www.wpmoderne.fr/categorie/tests/ ## Thèmes Développement de thèmes WordPress : thèmes classiques, thèmes blocs, thèmes enfants, theme.json. - [Des icônes dans un thème bloc : SVG inline, patterns et bloc maison](https://www.wpmoderne.fr/themes/icones-svg-theme-bloc-recette.md): Trois façons d'intégrer des icônes SVG dans un thème bloc — pattern avec SVG inline, CSS mask sur presets, petit bloc dédié — comparées côté accessibilité. - [Déployer sur un hébergement mutualisé sans pipeline : la méthode qui tient](https://www.wpmoderne.fr/themes/deployer-hebergement-mutualise-sans-pipeline-ftp.md): Un client sur hébergement mutualisé refuse tout CI/CD. Documentation d'un déploiement par FTP soigneusement scripté qui reste fiable malgré l'absence de pipeline. - [Cinq ans de thèmes blocs en production : ce qu’on changerait](https://www.wpmoderne.fr/themes/cinq-ans-themes-blocs-bilan.md): Pas un historique général de la fonctionnalité, mais un bilan personnel d'équipe : les choix techniques qu'on referait, et ceux qu'on éviterait si c'était à refaire. - [Ce qu’une agence sécurise avant de rendre la main sur un thème en fin de vie](https://www.wpmoderne.fr/themes/ce-qu-agence-securise-avant-rendre-main-theme-fin-de-vie.md): Mettre fin à un contrat de maintenance ne se résume pas à cesser de facturer : une transition mal préparée laisse le client démuni face à son propre thème. - [Optimiser une page d’auteur volumineuse, dans un vieux thème sans le réécrire](https://www.wpmoderne.fr/themes/optimiser-page-auteur-volumineuse-vieux-theme.md): Un auteur prolifique fait ramper la page qui liste ses articles. Réduire la charge de la boucle en ne récupérant que les identifiants avant un second passage ciblé. - [Cinq ans d’un thème de coopérative agricole jamais redesigné](https://www.wpmoderne.fr/themes/cinq-ans-theme-cooperative-agricole-jamais-redesigne.md): Un thème sur mesure construit pour une coopérative agricole n'a jamais été redesigné en cinq ans. Bilan technique entre dette accumulée et choix qui ont bien vieilli. - [Cinq ans de factures de correctifs prouvent qu’un thème gratuit a coûté cher](https://www.wpmoderne.fr/themes/cinq-ans-factures-correctifs-theme-gratuit-coute-cher.md): Zéro euro à l'achat contre plusieurs milliers d'euros de correctifs cumulés en cinq ans : la facture réelle d'un thème gratuit inverse souvent l'intuition du client. - [Dépréciations PHP 8.4 chez un cabinet de notaires : ce qui casse sans bruit](https://www.wpmoderne.fr/themes/php84-depreciations-theme-cabinet-notaires.md): Un thème ancien pour un cabinet de notaires tourne encore sous PHP 8.4. Checklist des dépréciations qui cassent silencieusement, sans exception fatale, mais avec de vrais effets de bord. - [Thème bloc ou composants Elementor V4 : où tracer la frontière](https://www.wpmoderne.fr/themes/theme-bloc-ou-elementor-v4-frontiere.md): Les classes globales et les éléments atomiques d'Elementor V4 rapprochent l'écosystème du builder de celui des thèmes blocs. Ce qu'un thème bloc pur fait encore mieux, et où l'écart s'est vraiment… - [Cloudflare Zaraz et un thème classique : déporter le JS tiers sans casser le Customizer](https://www.wpmoderne.fr/themes/cloudflare-zaraz-js-tiers-theme-classique-customizer.md): Configuration de Cloudflare Zaraz pour exécuter les scripts tiers côté serveur Cloudflare, sans perturber la prévisualisation du Customizer d'un thème classique. - [Migrer un parc de 40 sites d’agence vers WordPress 7.0 : notre check-list](https://www.wpmoderne.fr/themes/migrer-parc-40-sites-agence-wordpress-7-checklist.md): Liste de contrôle priorisée couvrant PHP 8.4, dépréciations et tests, pour une migration de parc de sites clients vers WordPress 7.0 sans interruption de service. - [Six ans d’audits de thèmes premium : le motif de rejet le plus fréquent](https://www.wpmoderne.fr/themes/six-ans-audits-themes-premium-motif-rejet-frequent.md): Après six ans d'audits systématiques de thèmes premium avant livraison client, un seul motif de rejet dépasse tous les autres réunis en fréquence. - Toute la catégorie : https://www.wpmoderne.fr/categorie/themes/