Une gestion des questions fréquentes, prête à resservir d’un site à l’autre.
Business Web Agence · Six plugins pour l’agence

Plugins WordPress
Les plugins que j’ai créés pour faire gagner du temps à toute l’équipe, de la création de composants à la traduction d’un site entier.
- Rôle
- Conception et développement
- Technos
- WordPress, Elementor, PHP, WP-CLI, Action Scheduler, API OpenAI
Le projet
En agence, j’ai créé six plugins WordPress. Deux servent toute l’équipe sur chaque projet : l’un fabrique les composants Elementor, l’autre traduit des sites entiers. Deux autres sont nés pour l’extranet du BIVB, parce qu’aucun plugin du marché ne couvrait ses besoins. Les voici, ouverts un par un.
01 / 06 · Utilisé par la plupart des développeurs de l’agence
BWA Component
Un composant, c’est un dossier dans le thème : un template PHP, un manifeste et un fichier qui déclare ses champs. Le plugin le découvre, en fait un widget Elementor et charge son CSS et son JS là où il sert. Ouvrez-le :
Trois fichiers dans le thème suffisent : le template, le manifeste et la déclaration des champs. La grille appelle une carte avec component_item() : les composants s’emboîtent.
<?php return [ 'icon' => 'eicon-banner', 'category' => 'bwa-sections', 'sections' => [ ['id' => 'content', 'label' => 'Contenu'], ['id' => 'style', 'label' => 'Style', 'tab' => 'style'], ], 'controls' => [ ['id' => 'kicker', 'label' => 'Surtitre', 'type' => 'text', 'section' => 'content'], ['id' => 'title', 'label' => 'Titre', 'type' => 'textarea', 'section' => 'content'], ['id' => 'text', 'label' => 'Texte', 'type' => 'wysiwyg', 'section' => 'content'], ['id' => 'button_url', 'label' => 'Lien du bouton', 'type' => 'url', 'section' => 'content'], ['id' => 'image', 'label' => 'Image', 'type' => 'media', 'section' => 'content'], ['id' => 'variant', 'label' => 'Variante', 'type' => 'select', 'section' => 'style', 'options' => ['light' => 'Clair', 'dark' => 'Sombre']], ], ];
$ wp bwa-component list name group version elementor css path Carte d’atout items 1.0.0 1 items/feature-card Grille d’atouts sections 1.0.0 1 1 sections/features-grid Hero partagé sections 1.0.0 1 1 sections/hero-split Total: 3 component(s) $ wp bwa-component validate path valid items/feature-card 1 sections/features-grid 1 sections/hero-split 1 $ wp bwa-component create (c, generate, g) Create a component from CLI stubs control Create a custom Elementor control scaffold pair (create-pair) Create a section and item component wired together list (ls) List discovered component.json files validate Validate component structure and metadata model Native content model files: create, list, inspect, validate. content WordPress content: list, get, export, validate, plan, apply.
Captures faites sur un WordPress de démonstration, avec des composants de test.
- Des champs déclarés, pas codés
Texte, image, lien, répéteur, couleur, typographie : une ligne par champ dans widget.php, et le panneau Elementor se construit tout seul.
- Des composants qui s’emboîtent
Un composant en appelle un autre avec component(), avec des slots nommés, à la manière de Vue ou de React.
- Les assets à la demande
Chaque composant embarque son CSS et son JS ; GSAP, Swiper ou Lenis ne se chargent que là où ils servent.
- Un registre partagé
On publie un composant avec ses captures et sa version, puis on l’installe sur un autre site, dépendances comprises.
- Un CLI
Créer, lister, valider, générer une paire section et carte : tout se fait aussi en ligne de commande.
- Pensé pour l’IA
Des skills pour Claude Code et Codex : l’IA sait créer, convertir et déboguer un composant. Monter un site devient bien plus rapide.
02 / 06 · API OpenAI · près de 2 000 pages pour Filab
BWA Traduction
Traduire un site WordPress entier par IA, et le garder à jour. Tout est traduit, et tout reste lié à la version d’origine : une modification en français se propage aux autres langues.
- Tout le site
Les pages Elementor en gardant leur structure, mais aussi les types de contenu personnalisés, les formulaires et les menus.
- Une langue source
On définit la langue d’origine d’une page ou d’un type de contenu : les autres langues en dépendent.
- Des traductions liées
Je modifie la page en français, et ses versions traduites sont retraduites automatiquement.
- Par lots, en arrière-plan
Les traductions passent par l’Action Scheduler, celui de WooCommerce, découpées en lots : des milliers de pages sans bloquer le site.
- Des liens traduits
Les liens internes de chaque page pointent vers les pages de la bonne langue.
- Publiées ou en brouillon
Une option permet de garder les traductions en brouillon, pour les relire avant de les mettre en ligne.
Sur un vrai site : Filab
Un laboratoire d’analyse dijonnais : le site existait en français, anglais, belge et suisse. Avec le plugin, près de 2 000 pages sont passées en espagnol, en italien et en allemand. Après avoir comparé plusieurs services, j’ai retenu l’API d’OpenAI pour son rapport qualité-prix.
03 / 06 · Créée pour l’extranet du BIVB
Médiathèque
Une médiathèque bien plus riche que celle de WordPress, pour les centaines de documents que l’interprofession partage avec les professionnels du vin.
- Classer et retrouver
Des dossiers, une recherche et des filtres par type pour s’y retrouver parmi des centaines de documents.
- Remplacer
Un média peut être remplacé par sa nouvelle version, directement depuis la médiathèque.
- Reliée aux accès
Elle s’appuie sur le plugin de gestion des accès : seuls les professionnels connectés y entrent.
- Droits d’image
Chaque photo indique son auteur et la date où ses droits expirent ; un e-mail prévient quand l’échéance arrive.
04 / 06 · Créé pour l’extranet du BIVB
Accès
Une gestion des accès bien plus fine qu’un simple système de rôles : on décide qui voit quoi, jusqu’à la personne, et les droits se transmettent d’eux-mêmes.
- Par rôle, par groupe, par personne
Un accès se donne à un rôle, à un groupe ou à une personne précise.
- Par page
Chaque page peut être réservée à certains profils ; ses pages enfants héritent de ses droits.
- Par taxonomie
Une catégorie peut porter des droits, et tout son contenu en hérite.
- Des accès personnalisés
Pour les cas particuliers, des règles sur mesure s’ajoutent aux autres.
Et aussi
Génère des pages à partir d’une liste de villes, pour le référencement local.












