0%

Kunsten at arve en WordPress-installation

8 år, 34 plugins og et tema, ingen tør røre. Opgaven begynder ikke med at rette noget – den begynder med at finde ud af, hvad der bliver brugt.

Opgaven lyder sjældent som et projekt. Den lyder som: “vores site er blevet langsomt”, eller “vi kan ikke opdatere, uden at noget går i stykker”. Bagved ligger en WordPress-installation, der har kørt i otte år, og som ingen har haft det fulde overblik over siden den udvikler, der byggede den, holdt op.

Det er en af de mere almindelige opgaver i WordPress-verdenen. Den bliver bare sjældent beskrevet, fordi den ikke er et nyt site med et før-og-efter-billede.

Det første skridt er ikke at rette noget

Fristelsen er at gå i gang: deaktivere plugins, opdatere kernen, rydde op i temaet. Det er også den hurtigste vej til at slukke for noget, der viste sig at være vigtigt.

Første skridt er at finde ud af, hvad der faktisk bliver brugt. Hvilke plugins gør noget, siden faktisk viser. Hvilke sidetyper findes der, og hvem redigerer dem. Hvad sker der ved en bestilling, en tilmelding, en formular – hele vejen fra klik til mail eller database. Det tager typisk en dag eller to, og det er den bedst brugte tid i hele opgaven.

Reglen, jeg arbejder efter, er enkel: rør ikke noget, før du ved, hvorfor det er der. Kode, der ser overflødig ud, er ofte nogens løsning på et problem, der ikke er dokumenteret nogen steder.

Hvad man typisk finder

Der er nogle mønstre, der går igen.

  1. Plugins, der overlapper. To cache-plugins installeret af hver sin udvikler. En galleriløsning, der bruges på én side, som ingen har besøgt i to år.
  2. Plugins, der udsender konkurrerende metadata. Den værste variant af overlappet, fordi den ikke gør noget synligt. To SEO-plugins skriver hver sin title, sin canonical og sine Open Graph-tags i samme sidehoved, og temaet lægger måske et tredje sæt oven i. Siden ser rigtig ud i browseren – men Google får modstridende signaler om, hvad siden hedder, og hvilken URL der er den rigtige. Det er ikke et plugin, der er i stykker. Det er to, der begge virker.
  3. Ændringer i temaet frem for i et child theme. Det betyder, at temaet ikke kan opdateres, uden at ændringerne forsvinder – og derfor er det ikke blevet opdateret. Derfra breder det sig: når temaet står stille, tør man heller ikke opdatere WordPress eller PHP, og til sidst er hele installationen låst fast af noget, ingen kan huske.
  4. Sporing, der kører uden om samtykket. Google Tag Manager installeret gennem et plugin, mens samtykket håndteres af et andet. Hver for sig virker de: banneret vises og gemmer valget, og GTM indlæser sine tags. De ved bare ikke nødvendigvis af hinanden, så brugerens valg i banneret bliver ikke omsat til den adfærd, man tror. Det er den slags, der ikke opdages ved almindelig brug af sitet, men først når man ser på, hvad browseren faktisk sender.
  5. Kode, ingen tør røre. En functions.php på 1.000 linjer, hvor det meste er tilføjet af forskellige mennesker over flere år. Ingen kommentarer, ingen historik, fordi det aldrig har ligget i Git.

Hvad jeg gør ved det

Rækkefølgen betyder mere end værktøjerne.

  1. En kopi og versionsstyring. Installationen skal ligge et sted, hvor man kan prøve noget af uden at ramme det, kunden bruger. Og koden skal i Git – ikke for at være moderne, men fordi det er forskellen på “vi ændrede noget, og nu virker det ikke” og “vi kan se præcis, hvad der skete”.
  2. Det, der gør ondt nu. Er sitet langsomt, måler jeg hvorfor, før jeg optimerer. Er der en sikkerhedsopdatering, der er blevet udskudt i to år, er den vigtigere end oprydning. Kunden skal mærke en forskel, før man går i gang med det, der ikke kan ses.
  3. Én ting ad gangen. Ét plugin fjernet, sitet testet, videre. Det tager længere tid end at rydde op i én omgang, men når noget går i stykker, ved man, hvad det var.
  4. Det, der gør næste gang lettere. Et child theme, så temaet kan opdateres. Ændringer flyttet fra functions.php til et sted, de kan læses. En kort note om, hvad der er hvor.

Hvornår det ikke kan betale sig

Nogle gange er svaret at bygge nyt. Det er det, når temaet er så gennemhullet, at oprydningen bliver dyrere end en ny frontend, eller når indholdsstrukturen ikke passer til det, sitet skal kunne i dag. Er det frontenden, der er problemet, er det ikke automatisk et argument for at forlade WordPress som CMS – se WordPress vs. headless.

Men det er sjældnere, end man tror – og det er værd at være opmærksom på, at den, der skal bygge det nye, sjældent er den mest objektive til at vurdere det. Et site med otte års indhold, indeksering og indgående links har en værdi, der ikke står i kodebasen.

Det, det egentlig handler om

En arvet installation er sjældent kun et teknisk problem. Det er også et spørgsmål om, at nogen skal kunne svare på, hvad der sker, og hvorfor.

Det er dét, arbejdet går ud på: at gøre et system, ingen forstår, til et system, nogen kan drive. Koden bliver bedre undervejs, men det er ikke pointen. Pointen er, at næste gang der skal ændres noget, er det en opgave og ikke en risiko.

Det er den samme tilgang, jeg bruger i WordPress og CMS: at forstå, hvad der allerede er der, før noget bliver rørt.

Det jeg oftest møder

En arvet installation har sjældent dem alle, og de færreste er alvorlige hver for sig. Det er kombinationen, der gør en opgave svær at estimere.

01_Plugin-gæld30-60 plugins, hvor flere løser næsten samme problem, nogle er forladte, og ingen ved længere, hvilke der er nødvendige.

02_Plugin-konflikterTo plugins hooker ind samme sted, loader hver sin version af et bibliotek eller ændrer den samme funktionalitet.

03_OpdateringsangstWordPress, PHP, tema eller plugins kan ikke opdateres, fordi ingen ved, hvad der knækker.

04_Købte temaer og page buildersElementor, Divi, WPBakery og lignende kan efter nogle år efterlade en løsning, der er svær at ændre uden at arbejde imod systemet.

05_PerformancePlugins og temaer loader CSS og JavaScript på alle sider, også hvor det ikke bruges. Dertil tunge billeder, dyre queries og manglende caching.

06_Database-oprydningwp_options, autoloadede options, revisions, transients og tabeller fra plugins, der for længst er slettet.

07_WP-CronPraktisk indtil jobs bliver tunge, fejler stille eller skal køre pålideligt på et bestemt tidspunkt.

08_SikkerhedGamle plugins og temaer, for brede rettigheder, XML-RPC, filuploads, ubeskyttede endpoints og administratorer nok til at stille et fodboldhold.

09_Egen kode de forkerte stederÆndringer direkte i parent theme eller i et plugin, snippets i functions.php - og den klassiske lille rettelse i core.

10_Manglende versionsstyringÆndringer lagt direkte på produktion via wp-admin eller FTP, og ingen sikker måde at se, hvad der er ændret siden sidst.

11_Staging og produktionDatabaseindhold skal den ene vej, kode den anden, mens uploads og redaktionelle ændringer helst ikke må overskrives.

12_URLs i databasenSerialiserede data og absolutte URLs gør en almindelig search/replace mere spændende, end den burde være.

13_Mailwp_mail() kan godt returnere succes, uden at mailen ender i modtagerens indbakke. Pludselig bliver SMTP eller en mailtjeneste, SPF, DKIM og DMARC en del af WordPress-opgaven.

14_REST API og integrationerAutentificering, rate limits, webhooks, retries og eksterne systemer, der ikke opfører sig, som dokumentationen lovede.

15_WooCommerceEn kategori for sig: checkout, hooks, ordrestatusser, betalingsgateways, moms, fragt, mails og plugins oven på plugins.

16_FlersprogethedWPML eller Polylang, hreflang, oversatte slugs, canonicals og indhold, der ikke findes på alle sprog.

17_Teknisk SEORedirects, canonicals, sitemap, robots, strukturerede data - og flere SEO-plugins, der alle vil bestemme indholdet af <head>.

18_Tracking og samtykkeTag Manager, GA4, Google Ads, Consent Mode og cookie consent. Typisk her man opdager, at tre plugins og temaet alle indsætter tracking.

19_Gutenberg og blokkeFint, når det er tænkt igennem. Mindre fint, når redaktøren får 80 blokke og mulighed for at bryde designsystemet.

20_Roller og rettighederEditor skal kunne rette dette, men ikke dét - hurtigt mere kompliceret end standardrollerne i WordPress rækker til.

21_Mediebiblioteket12.000 billeder, 14 genererede størrelser af hvert og 40 GB thumbnails, hvor ingen ved, hvilke temaet bruger.

Listen er ikke en anklage mod WordPress. Det er, hvad der sker med systemer, mange mennesker har rørt ved gennem otte år.

CMS Løsninger

CMS Løsninger bygget til dem, der skal arbejde i dem hver dag.

Emner_

Curriculum Vitae ↓

Profile Image

Paul Nybo Andersen

Profil_

49 år, CTO, grafisk designer og fullstack udvikler (LAMP/LEMP) med 26 års erfaring i udvikling af digitale løsninger til en bred målgruppe af virksomheder.

Scroll for læse mere →

01_Ydelser_

Hvordan jeg kan hjælpe

Jeg kombinerer design og udvikling til løsninger, der er enkle at bruge og nemme at holde af.

PHP • Laravel • MySQL • JavaScript

Webudvikling

Fra database og backend til frontend, integrationer og drift.

UX • Figma • Prototyper • Test

Webdesign & UX

Design af brugerflader, der skal fungere for både brugeren og forretningen.

Visuel identitet • Designsystemer • Print

Visuel identitet

Visuel identitet til virksomheder, der skal se ud som noget, man kan regne med.

WordPress • Umbraco • Magento

CMS Løsninger

CMS Løsninger bygget til dem, der skal arbejde i dem hver dag.

Core Web Vitals • SEO • Caching

Performance & SEO

Websites, der loader hurtigt – også på en telefon på et dårligt net.

Arkitektur • Teknologivalg • Sparring

Teknisk rådgivning

Når der skal træffes en teknisk beslutning, og du mangler nogen at vende den med.

02_Case: Lifeguard Health ApS_

8 år med Lifeguard

CTO & Co-Founder

Fra 2015 til 2023 var jeg CTO og medstifter af Lifeguard Health ApS. Her arbejdede jeg med udviklingen af en digital sundhedsplatform, der kombinerede teknologi, data og personlig coaching. Rollen omfattede alt fra produktudvikling, UX og softwarearkitektur til ledelse af udviklingsteams, drift og forretningsudvikling. De otte år i Lifeguard kom til at præge min tilgang til både teknologi, produkter og mennesker og danner i dag fundamentet for meget af det, jeg arbejder med.

Se Lifeguard's Core-story →

Lifeguard præsentation_1_4_

Slides #1 showing my last job
Slides #2 showing my last job
Slides #3 showing my last job

03_Ansættelseshistorik_

Mine erfaringer

Fra 1999 til 2026 har jeg i forskellige roller arbejdet med design, teknologi og digital forretning. Her er 10 nedslag i den erfaring — de opgaver, jeg har løst, og de kompetencer, jeg har brugt undervejs.

Se dem som cards, eller udforsk perioder og overlap på tidslinjen.

Erfaringer_

Billede fra min tid hos ESGRapporter

2024-2026, CTO & Co-founder

ESGRapporter

Nu: ESGRapporter ApS.

Vi byggede ESG-rapporteringsplatformen i Laravel og havde det tekniske ansvar for retningen, rapportdelen og alt det visuelle.

Billede fra min tid hos Revolvo

2024-2026, Senior Developer • UI/UX • Design

Revolvo

Nu: Revolvo Aps. + BmyGuest ApS.

Jeg arbejdede med udvikling, UI/UX og grafisk identitet. 60% af tiden gik til BmyGuest og IDoMeetings, som Revolvo var medejer af.

Billede fra min tid hos Lifeguard

2015-2023, CTO & Co-founder

Lifeguard

Nu: Lifeguard Health ApS.

Jeg byggede LifeScore-platformen i Laravel med samtykkestyret adgang til sundhedsdata, en app til armbåndet og stod for alt UX og design.

Billede fra min tid hos VitalityGuard

2016-2018, CTO & Co-founder

VitalityGuard

Nu: FIDIMI

Vi drev Lifeguard-platformen i white label gennem et joint venture med Dansk Sundhedssikring. Mærsk var den største kunde.

Billede fra min tid hos ContentCPH

2010-2015, Senior Digital Wizard

ContentCPH

Nu: Charlie Tango

Jeg byggede 60+ Facebook-apps i PHP for Samsung, IKEA og H&M. Nik & Jay-kampagnen for Samsung vandt Danish Internet Awards 2014.

Billede fra min tid hos BOCCA WIRED

2009-2010, Freelance udvikler

BOCCA WIRED

Nu: BOCCA

Jeg byggede kampagnesites for Movia og Hjerteforeningen, heriblandt Overraskende hurtig, der vandt bronze ved Creative Circle Award.

Billede fra min tid hos EuroRSCG

2008-2010, Inhouse Freelance udvikler

EuroRSCG

Nu: Havas Danmark

Jeg hentede bureauets digitale opgaver hjem fra konkurrenterne og byggede iPhone-site og interaktive produktværktøjer for GN/Jabra.

Billede fra min tid hos Makazilab

2005-2006, Co-founder & udvikler

Makazilab

Nu: MIND SWITCH

Medstifter af Makazilab, hvor jeg satte strøm til tre undervisningskoncepter om intelligenstyper, iværksætteri og kreativitet til folkeskole ..

Billede fra min tid hos Bandits Inc.

1999-2026, Enkeltmandsvirksomhed

Bandits Inc.

Nu: Audiotracking v/Paul Nybo Andersen

Min egen enkeltmandsvirksomhed siden 1999. Gennem den har jeg solgt webudvikling til bureauer, der havde grafikken, men manglede udvikleren.

Billede fra min tid hos Audio Management

1999-2003, Co-founder & Digital Director

Audio Management

Nu: Audiomanagement ApS

Medstifter af Audiomanagement, hvor vi udviklede SoundIdentity® — lydbranding og lyddesign til virksomheder som Bang & Olufsen og brandingek ..

Nu 2025 2020 2015 2010 2005 2000

Vælg en erfaring for at læse mere

04_Kompetencer + Stack_

Mine kompetencer

Som det fremgår af forrige sektion, har jeg gennem årene beskæftiget mig med en bred vifte af opgaver og indtaget mange forskellige jobroller, lige fra lydtekniker til fotograf, grafiker, webudvikler og CTO. Gennemgående for dem alle har været min passion for at skabe meningsfulde oplevelser og min drivkraft for at skabe noget unikt.

I min tilgang har jeg altid været åben over for at udforske nye løsninger til eksisterende udfordringer og har aldrig været bange for at tilegne mig ny viden. Dette har resulteret i en bred vifte af kompetencer, som jeg har sammensat over tid.

Jeg har her forsøgt at liste de væsentligste.

Rating

- " Der er jeg 100 meter mester i".

- " Det er jeg ret god til".

- " Det er jeg udemærket til".

- " Det er ikke det jeg er bedst til, men jeg kan til nøds".

- " Det er jeg ikke haj til - men jeg er villig til at lære".

05_Skrevet_

Noter fra arbejdet

2026-10_

En god brief gør de usynlige beslutninger synlige

"Det havde jeg regnet med var inkluderet."

2026-09_

Skal vi bygge AI ind i vores produkt?

"Vi skal have noget AI." Det kan være den rigtige beslutning. Jeg ville begynde med at finde ud af, hvilket problem teknologien skal løse.

2026-09_

Et godt design begynder ikke i Figma

Jeg kan åbne Figma og begynde at tegne en hjemmeside med det samme. Det er sjældent en god idé. For før jeg ved, hvordan siden skal se ud, vil jeg vide, hvad den skal få nogen til at gøre.

2026-08_

Hvad er teknisk SEO – og hvad er det ikke?

Når en side ikke bliver fundet på Google, er det fristende at begynde med teksten. Men før jeg ville ændre indholdet, ville jeg sikre mig, at Google faktisk kan finde siden, læse den og forstå, hvilken version der skal vises i søgeresultatet. Det er en stor del af det, teknisk SEO handler om - Tekniske problemer kan stå i vejen for selv godt indhold.

2026-08_

Hvad koster en hjemmeside?

– og hvorfor er to tilbud næsten umulige at sammenligne

2026-08_

Hvorfor er min hjemmeside langsom?

En langsom hjemmeside kan skyldes et billede på 4 MB. Den kan også skyldes 10 andre ting. Det første spørgsmål er derfor ikke, hvad sitet er bygget i – det er, hvor tiden forsvinder hen.

2026-06_

Hvilket CMS skal man vælge?

WordPress, Umbraco, Drupal, Shopify, Webflow eller noget helt sjette? Mit lidt irriterende svar er som regel: Hvad skal det bruges til?

2026-05_

En visuel identitet skal kunne fungere uden grafikeren

En visuel identitet er nem at få til at se godt ud på en skærm. Det bliver sværere, når den skal ud i virkeligheden – i en PowerPoint, på en faktura, på et skilt nogen selv retter i tre år senere.

2026-05_

Er mit job som grafiker truet?

AI-genereret grafik er rykket ud af computeren og ind i den virkelige verden. Spørgsmålet er ikke længere, om AI kan lave grafik. Det kan den. Spørgsmålet er, hvad der så er tilbage af grafikerens arbejde.

2026-04_

Hvornår skal man skifte CMS?

De fleste stiller det forkerte spørgsmål først. Det interessante er ikke, hvilket CMS der er bedst – det er, om problemet overhovedet er CMS'et.

2026-04_

WordPress – kort fortalt

Det, der gør WordPress nemt at udvide, er samtidig årsagen til mange af de problemer, man møder i ældre installationer.

2026-03_

WordPress vs. headless — hvad er forskellen i praksis

Headless giver frihed ved at skille tingene ad. Men det, man skiller ad, skal bagefter forbindes igen.

2026-02_

Nogle gange designer jeg i VS Code

Ikke fordi jeg har opgivet Figma. Men fordi det nogle gange er hurtigere at se, om en idé holder, i browseren end på et canvas.

2026-01_

Den dyreste kode er den, man ikke behøver at skrive

Ikke al dyr kode er dårlig kode. Nogle af de dyreste beslutninger, jeg har været med til, var velskrevne løsninger på problemer, ingen havde endnu.

2025-12_

Fra koder til reviewer – hvordan AI har ændret arbejdsgangen

AI ændrer på kort sigt ikke, hvad jeg kan – det ændrer blot min arbejdsgang.

2025-11_

Kunsten at arve en WordPress-installation

8 år, 34 plugins og et tema, ingen tør røre. Opgaven begynder ikke med at rette noget – den begynder med at finde ud af, hvad der bliver brugt.

2025-08_

Ctrl, Cmd og C#

Et sprog er til at lære. Det er domænet og kodebasen, der tager tid – og to maskiner, der kostede mere opmærksomhed end syntaksen.

2025-02_

Efter en konkurs

35 millioner på det højeste, konkurs i december 2023, nyt selskab syv måneder senere. Det her er, hvad der lå imellem – og hvad jeg tog med.

2024-11_

Rapporten der skulle ligge i receptionen

Da vi byggede ESGRapporter, havde konkurrenterne tungere beregningsmotorer end os. Vi satsede et andet sted: på at det, brugeren sad tilbage med, var værd at vise frem.

06_Når jeg ikke arbejder_

Lidt om mig

Jeg er født og opvokset i København. Men efter nogle år med børn i lejlighed på Østerbro, valgte min kæreste og jeg at flytte i hus. Vi bor i Hellerup på 11. år, men ikke længere væk fra København end man kan hoppe op på cyklen og så er man tilbage.

Sidstnævnte gør jeg ofte - det handler om inspiration og nye designindtryk. Jeg forsøger af samme grund stadig at finde tid til fototure. Men da mit arbejde altid har været min hobby, har det været en udfordring at finde balance mellem tid til både fritidsprojekter og arbejdsprojekter.

Når jeg ikke arbejder bruger jeg en del tid med at spiller og lytte til musik. Desværre er det med tiden mest blevet til lytning, hvilket har været en meget dyr, men også givtig passion.

Fælles for alle mine passioner er ønsket om af skabe noget - jeg håber at dette kan komme jer til gode.

Se TT38 profil

+25 års erfaring med digitale produkter ↓

Tilgængelig for rådgivning, udvikling, digitale produkter og teknisk ledelse.