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 HTML
  • page.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 :

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 :

HTML
<script defer data-domain="monsite.flexweg.com" src="https://plausible.io/js/script.js"></script>

Dans le Head HTML. Save → Regenerate.