<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wordpress | Dr. Goulu</title><link>https://drgoulu.com/tag/wordpress/</link><atom:link href="https://drgoulu.com/tag/wordpress/index.xml" rel="self" type="application/rss+xml"/><description>Wordpress</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Mon, 24 Aug 2026 16:30:48 +0200</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_eee4a95885829ab2.png</url><title>Wordpress</title><link>https://drgoulu.com/tag/wordpress/</link></image><item><title>Migration : de Wordpress à Hugo</title><link>https://drgoulu.com/2026/08/24/migration/</link><pubDate>Mon, 24 Aug 2026 16:30:48 +0200</pubDate><guid>https://drgoulu.com/2026/08/24/migration/</guid><description>&lt;p&gt;Après plusieurs années de quasi abandon, j&amp;rsquo;ai décidé de faire revivre ce site pour plusieurs raisons :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;il tombait en loques et c&amp;rsquo;était dommage&lt;/li&gt;
&lt;li&gt;je veux y transférer une bonne partie de l&amp;rsquo;énorme contenu que j&amp;rsquo;ai publié
ces dernières années.&lt;/li&gt;
&lt;li&gt;j&amp;rsquo;ai du temps à perdre, et des IA pour m&amp;rsquo;aider. Ca s&amp;rsquo;est révélé indispensable.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="les-problèmes-de-wordpress"&gt;Les problèmes de WordPress&lt;/h2&gt;
&lt;p&gt;Depuis 2010 ce blog était propulsé par WordPress, qui est devenu un monstre, notamment à cause de la foison de plugins que j&amp;rsquo;utilisais. Il devenait de plus en plus difficile de gérer les versions, les conflits entre plugins, les mises à jour, et les failles de sécurité, sans compter les bugs de certains, qui ont notamment causé la perte de nombreuses images.&lt;/p&gt;
&lt;p&gt;Pourtant, devant l&amp;rsquo;ampleur de la tâche, j&amp;rsquo;étais assez réticent à changer de solution. J&amp;rsquo;ai commencé par copier le site en local sous
, ce qui me permettait de farfouiller dans les fichiers sans passer par FTP, et surtout de ne pas abîmer le site en production. J&amp;rsquo;ai ainsi pu remettre à jour certains plugins indispensables, notamment&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
qui a été accepté comme
(même si la bannière dit qu&amp;rsquo;il est obsolète&amp;hellip;)&lt;/li&gt;
&lt;li&gt;
pour gérer les milliers de liens vers Wikipédia de drgoulu.com&lt;/li&gt;
&lt;li&gt;
qui était abandonné&lt;/li&gt;
&lt;li&gt;et le thème
qui à l&amp;rsquo;air de l&amp;rsquo;être car mes &amp;ldquo;Pull Requests&amp;rdquo; qui le rendent compatible avec les dernières versions de WP sont ignorées&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais même avec tout ça, j&amp;rsquo;étais encore insatisfait, et attiré par la curiosité : comment faire un blog moderne en 2026 ?&lt;/p&gt;
&lt;h2 id="le-choix--hugo"&gt;Le choix : Hugo&lt;/h2&gt;
&lt;p&gt;La tendance actuelle, est clairement au
: le site est considéré comme un projet informatique qui est &amp;ldquo;compilé&amp;rdquo; en pages HTML fixes, &amp;ldquo;comme dans le temps&amp;rdquo;. Plus de base de données, plus de PHP, plus de failles de sécurité potentielles, et en plus la navigation devient hyper rapide, comme vous vous en apercevez en parcourant ce site&amp;hellip;&lt;/p&gt;
&lt;p&gt;Je suis assez rapidement tombé sur
, mais par acquit de conscience j&amp;rsquo;ai aussi essayé
qui m&amp;rsquo;a bien tenté pour son orientation scientifique basée sur Python, Jupyter, etc. mais il est surtout utilisé dans le monde académique, et moins pour les blogs généralistes comme le mien. De plus il faut installer
à la VS Code pour l&amp;rsquo;éditer&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai aussi examiné
, dont la technologie a l&amp;rsquo;air plus moderne encore, peut-être trop&amp;hellip;&lt;/p&gt;
&lt;p&gt;Après avoir demandé un
, j&amp;rsquo;ai choisi Hugo dans sa mouture
, à la fois complète et facile à démarrer.&lt;/p&gt;
&lt;h2 id="markdown"&gt;Markdown&lt;/h2&gt;
&lt;p&gt;Un &amp;ldquo;inconvénient&amp;rdquo; de ces générateurs de sites statiques est que les articles doivent être écrits en
, un format de texte enrichi autrefois réservé à de simples fichiers readme.md qui devient très à la mode avec les IA, mais qui n&amp;rsquo;est pas
. L&amp;rsquo;idée est d&amp;rsquo;éditer les articles soit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;avec un éditeur de texte avec un système de prévisualisation du résultat. c&amp;rsquo;est notamment l&amp;rsquo;idée de plugins de VS Code comme :
&lt;ul&gt;
&lt;li&gt;
, qui est tout neuf et pas très convaincant pour l&amp;rsquo;instant&lt;/li&gt;
&lt;li&gt;
plus abouti actuellement me semble t&amp;rsquo;il&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
, un éditeur wysiwyg et gestionnaire du site Hugo en ligne via GitHub, que jutilise pour écrire ces lignes parce qu&amp;rsquo;il est gratuit pendant 20 jours, mais assez cher ensuite, ce qui fait que je ne vais pas le garder, hélas&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="alignright" style="max-width: 600px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/2a62d67153ec2834b7d7f23250a1c260-1_hu_26d96916948c05c4.webp" srcset="https://drgoulu.com/posts/2008/images/2a62d67153ec2834b7d7f23250a1c260-1_hu_26d96916948c05c4.webp 320w, https://drgoulu.com/posts/2008/images/2a62d67153ec2834b7d7f23250a1c260-1_hu_d7799e39f851edca.webp 480w, https://drgoulu.com/posts/2008/images/2a62d67153ec2834b7d7f23250a1c260-1_hu_f3bd9a202d9a70e6.webp 699w" sizes="(max-width: 640px) 100vw, 600px" alt="Galaxie" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Galaxie&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div
style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://player.vimeo.com/video/335988321?dnt=0"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen" title="Hugo Explainer Video"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="commentaires-disqus"&gt;Commentaires Disqus&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;intégration des commentaires historiques du blog repose sur
. Lors de la migration vers Hugo Blox / Tailwind CSS, un problème d&amp;rsquo;incompatibilité est apparu :&lt;/p&gt;
&lt;h3 id="incompatibilité-oklch-et-disqus-embedjs"&gt;Incompatibilité OKLCH et Disqus &lt;code&gt;embed.js&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Le script d&amp;rsquo;intégration de Disqus (&lt;code&gt;embed.js&lt;/code&gt;) analyse automatiquement l&amp;rsquo;environnement de la page (&lt;code&gt;getComputedStyle&lt;/code&gt;) pour adapter les couleurs du fil de discussion (mode clair/sombre, couleur des liens).&lt;/p&gt;
&lt;p&gt;Or, Tailwind CSS et Hugo Blox utilisent désormais le format de couleur moderne &lt;code&gt;oklch(...)&lt;/code&gt;. Le parseur interne de Disqus (&lt;code&gt;parseColor&lt;/code&gt;), n&amp;rsquo;étant pas compatible avec &lt;code&gt;oklch&lt;/code&gt;, échouait avec l&amp;rsquo;erreur :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uncaught Error: parseColor received unparseable color: oklch(...)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="solution-mise-en-place"&gt;Solution mise en place&lt;/h3&gt;
&lt;p&gt;Pour isoler Disqus des styles &lt;code&gt;oklch&lt;/code&gt; globaux, des règles CSS explicites ont été ajoutées dans &lt;code&gt;assets/css/custom.css&lt;/code&gt; afin de forcer des formats de couleurs traditionnels (Hex / RGB) sur le conteneur &lt;code&gt;#disqus_thread&lt;/code&gt;, son texte d&amp;rsquo;arrière-plan et ses liens internes (&lt;code&gt;#disqus_thread a&lt;/code&gt;), pour les thèmes clair et sombre :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;/* Forcer des couleurs standards (Hex/RGB) pour Disqus */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#111827&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#ffffff&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;link&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;visited&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;hover&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;active&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dsq-brlink&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dsq-brlink&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#2563eb&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#f8fafc&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#0f172a&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;link&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;visited&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;hover&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;disqus_thread&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;active&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dsq-brlink&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dark&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;dsq-brlink&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#60a5fa&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>