Bloggen uppdaterad efter 17 år


Categories: utveckling

Efter 17 år med WordPress och 13 år utan uppdateringar var det dags för en rejäl uppdatering. Jag har nu migrerat hela bloggen från WordPress till Astro, ett modernt ramverk för statiska webbplatser.

Varför byta från WordPress?

WordPress har tjänat mig väl i många år, men för en enkel blogg kändes det som overkill att köra ett helt CMS med databas. Jag ville ha något snabbare, enklare och mer modernt. Dessutom ville jag ha bättre kontroll över innehållet genom att skriva i Markdown eller MDX.

Så här gick migreringen till

Steg 1: Exportera från WordPress

Först exporterade jag allt innehåll från WordPress via Admin-panelen (Verktyg → Exportera). Detta skapade en XML-fil med alla inlägg, sidor och metadata.

Steg 2: Konvertera till Markdown

För att konvertera WordPress-exporten till Markdown-filer använde jag det utmärkta verktyget wordpress-export-to-markdown.

Jag körde följande kommando:

npx wordpress-export-to-markdown --input=lellkycom.wordpress.2026-01-26.xml

Verktyget ställde några frågor:

  • Ska varje inlägg ha en egen mapp? Nej
  • Lägg till datumprefix på inlägg? Nej
  • Organisera inlägg i datummappar? Year and month folders (YYYY/MM struktur)
  • Spara bilder? All Images

Resultatet blev:

  • 98 blogginlägg konverterade till Markdown
  • 8 sidor
  • 34 bilder hämtade från inlägg
  • Alla inlägg organiserade i YYYY/MM/ mappstruktur

Steg 3: Sätta upp Astro

Jag skapade ett nytt Astro-projekt med blog-mallen:

npm create astro@latest -- --template blog

Astro-mallen kommer med:

  • Minimal och snabb design
  • Inbyggt stöd för Markdown och MDX
  • SEO-vänligt med canonical URLs och OpenGraph
  • RSS-feed
  • Sitemap
  • 100/100 i Lighthouse performance

Steg 4: Migrera innehållet

Jag kopierade alla konverterade Markdown-filer till src/content/blog/ i Astro-projektet. Tack vare att både wordpress-export-to-markdown och Astro använder samma YYYY/MM mappstruktur passade allt perfekt!

Frontmattern från WordPress-exporten matchade också bra med Astros schema:

  • title
  • description
  • categories
  • tags

Dock blev det date istället för pubDate som astro förväntade sig. Det fixade jag med en search-replace (men man kan ge en växel till kommandot som gör md-filer som byter namn på fält).

Steg 5: Kolla, dubbelkolla och trippelkolla

Dubbelkolla att allt kom med. Det gjorde det inte. Jag hade en plugin som hette NextGen Gallery som hade sparat bildfiler på servern. De fick jag ladda ner med FTP och sen la jag dem i det nya projektet.

Se till att kolla, dubbelkolla och trippelkolla att allt som ligger på befintlig wp-installation kommer med!

Steg 6: Anpassa och publicera

Sista steget var att göra några mindre anpassningar och sedan bygga och publicera siten:

npm run build

Det återstår dock att snygga till designen och lägga till lite funktioner.

Steg 7: Cloudflare är bra, men deras UI suger

Cloudflare pages är gratis för privatpersoner och kan publicera Astro/Next/Gatsby mfl statiska och SSR-appar. Det är bara signa upp sig och sätta upp ett nytt pages-projekt, koppla till sin GitHub och voila; din sajt är publicerad.

I teorin. I verkligheten så är Astros dokumentation för hur man gör en deploy till Cloudflare felaktig, och Cloudflare lämnar mer att önska.

Om man lyckas hitta till “Workers and Pages” (först måste man hitta Compute & AI, jättelogiskt…) i Cloudflare så ska man klicka på “Create Application”. Där ska man inte gå vidare, utan längst ner står det “Looking to deploy Pages? Get started”. Klicka på Get started så kommer du rätt.

Koppla till Github, välj Astro som template och boom 💥 så bygger sajten.

Resultat

Nu har jag en blixtrsnabb statisk webbplats där allt innehåll finns som Markdown-filer i Git. Detta ger mig:

  • Bättre prestanda - statiska filer är mycket snabbare än WordPress
  • Enklare underhåll - ingen databas eller PHP att uppdatera
  • Versionskontroll - allt innehåll versionshanteras i Git
  • Bättre utvecklarupplevelse - skriva i Markdown med valfri editor eller AI
  • Cloudflare - CDN, SSL/HTTPS och massa coola grejer

Efter 17 år känns det skönt med lite förnyelse!

Sa jag att AI hjälpte mig med lite klurigheter på vägen?

Blog-templaten kan inte lista taggar eller kategorier. Men några promptar senare så var det fixat!

Nu ska jag fundera på vad jag ska med min nya hemsida till.

Bonus

Jag promptade AIn med

look into the @src/content folder for md files with frontmatter. Analyze the folder structure and the frontmatter. Then, write a script called something like new-blog-post-md.sh that first asks for title, description and so on based on the analysed frontmatter and then creates a new md file in the src/content/blog folder in the corresponding catalog based on todays date. I.e. If the date is 2026-01-30 check if the folder 2026 exist and if not, create it. In that folder, check if 01 exist, and if not create it. And then create the md file in that folder with the title as name.

…och fick ett fungerande skript för att skapa nya bloggposter med. Sweet!