flexweg-custom-code (must-use)
vous permet d'injecter du HTML / CSS / JS site-wide soit dans le soit juste avant de chaque page publiée. Les cas d'usage classiques :
flexweg-custom-code vous permet d'injecter du HTML / CSS / JS site-wide soit dans le <head> soit juste avant </body> de chaque page publiée. Les cas d'usage classiques :
- Analytics : Google Analytics 4, Plausible, Fathom, Matomo
- Tag managers : Google Tag Manager, Segment
- Widgets de chat : Intercom, Crisp, Tawk.to
- Polices :
<link>supplémentaires vers un host de webfonts au-delà de ce que le thème actif charge - Overrides CSS personnalisés : bloc
<style>pour override les styles du thème sans forker - Microdata /
<meta>tags non couverts par core-seo ou votre thème - Scripts A/B testing (Google Optimize, VWO)
Il est must-use parce qu'une fois que vous avez câblé des analytics ou un widget de chat à travers, désactiver le plugin viderait silencieusement les script tags de chaque page au prochain regen. C'est une footgun qu'on préfère ne pas mettre dans les mains des admins.
Page de réglages
/settings/plugin/flexweg-custom-code expose deux gros textareas :
Head HTML
Inséré entre <head> et </head>, après les balises générées par les thèmes / autres plugins. Utilisez pour :
- Snippets analytics
<link>de polices ou de stylesheets<meta>supplémentaires<style>blocs
Body-end HTML
Inséré juste avant </body>. Utilisez pour :
- Scripts qui doivent tourner après le DOM (chat widgets, popups)
- Scripts qui pourraient bloquer le rendu si dans
<head>(mieux defer to body-end) - Markup ajouté en fin de page (sticky banner, etc.)
Les deux acceptent du HTML arbitraire. Au save, le plugin patche pluginConfigs["flexweg-custom-code"] ; la prochaine publication / regen pousse le HTML mis à jour.
Pas d'auto-régénération après changement
Le plugin ne déclenche pas automatiquement un Regenerate après save — c'est intentionnel parce que beaucoup d'utilisateurs vont éditer le HTML plusieurs fois de suite, et chaque save déclencherait un regen complet (~30s pour 100 posts).
Après save, vous voyez un toast : « Cliquez sur Regenerate site → All HTML pages pour appliquer aux pages existantes. » Cliquez quand vous êtes prêt.
Hook utilisé
Le plugin enregistre deux filtres :
page.head.extra(sync) — append le head HTMLpage.body.end(sync) — append le body-end HTML
Les deux sont synchrones donc tournent instantanément à chaque rendu.
Pas de sanitisation
Le HTML que vous tapez est inséré tel quel dans chaque page publiée. Aucune sanitisation. Donc :
- Scripts inline tournent sur chaque page
- Erreurs de typage HTML peuvent casser la mise en page
- Tags non équilibrés ou attributs malformés peuvent causer des warnings de validation
Testez sur un site de staging avant de pousser en prod.
Limites
- Pas d'override per-page — le HTML est site-wide. Pour des injections par-page, utilisez le bloc HTML personnalisé dans l'éditeur.
- Pas de conditional inclusion — pas de moyen de dire « inclure ce script uniquement sur les pages avec catégorie X ». Si vous avez besoin, écrivez un plugin custom.
- Pas de versioning — pas d'historique des changements. Garder un backup hors-ligne si le HTML est complexe.
Désactivation
Pas possible — must-use. Pour vider le HTML : laissez les deux textareas vides + save.
Cas particulier : Google Analytics 4
Pattern recommandé : le snippet GA4 dans le Head HTML :
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
Remplacez G-XXXXXXXXXX par votre measurement ID. Save → Regenerate → analytics démarre sur chaque page au prochain reload.
Cas particulier : Plausible
Plus simple que GA4 :
<script defer data-domain="monsite.flexweg.com" src="https://plausible.io/js/script.js"></script>
Dans le Head HTML. Save → Regenerate.