Erstatte ord i alle WordPress-innlegg: slik gjør du det

Har du noen gang skrevet et ord feil i hundrevis av innlegg, byttet firmanavn, eller ønsket at et bestemt ord automatisk skal bli en lenke overalt på bloggen? Da trenger du ikke å redigere hvert innlegg for hånd. I WordPress kan du erstatte ett eller flere ord i alle innlegg på én gang – enten midlertidig med litt kode i temaet, eller permanent direkte i databasen. Denne guiden går gjennom alle metodene, forklarer hva som faktisk skjer under panseret, og viser hvilke feller du må styre unna.

Det viktigste å forstå med en gang: det finnes to helt forskjellige måter å «erstatte et ord» på i WordPress. Den ene endrer bare det leserne ser, mens originalteksten ligger urørt i databasen. Den andre skriver om selve teksten som er lagret. Hvilken du bør velge avhenger av om endringen skal være midlertidig og reversibel, eller endelig.

Viktige punkter

  • To metoder: kode i functions.php endrer bare det som vises, mens plugin, WP-CLI og SQL endrer selve databasen permanent.
  • functions.php bruker str_replace på the_content-filteret – helt reversibelt, men kjører ved hver sidevisning.
  • Permanent endring: Better Search Replace (enklest), WP-CLI wp search-replace (kraftigst) eller direkte SQL (mest risikabelt).
  • Ta alltid backup av filer og database før du redigerer, og kjør en tørrkjøring (dry run) der verktøyet tilbyr det.
  • Vanlige feller: søk-og-erstatt skiller på store/små bokstaver og treffer også ord inni andre ord.
  • Bruk et child-tema så koden overlever temaoppdateringer.

Hva betyr det å erstatte ord i WordPress-innlegg?

Å erstatte ord betyr å bytte ut en bestemt tekststreng med en annen i innholdet ditt. Det kan være så enkelt som å rette en konsekvent skrivefeil, eller mer avansert som å gjøre et nøkkelord om til en lenke hver gang det dukker opp. Poenget er at du slipper å åpne og redigere hvert enkelt innlegg manuelt.

WordPress lagrer alt innhold i en database (vanligvis MySQL eller MariaDB). Teksten i innleggene dine ligger i en tabell som heter wp_posts, i kolonnen post_content. Når noen besøker siden, henter WordPress teksten derfra og kjører den gjennom en rekke «filtre» før den vises. Det er nettopp her de to metodene skiller lag:

  • Visningsmetoden griper inn i filtrene og bytter ut ord mens siden bygges. Databasen endres ikke.
  • Databasemetoden skriver den nye teksten rett inn i wp_posts, slik at endringen blir permanent.

Begge har klare bruksområder, og vi tar for oss begge under. Jobber du mye med egne temaer, er dette noe av det samme håndverket som når du lærer deg å bruke tilpassede felter (custom fields) – du styrer hvordan innholdet behandles før det når leseren.

Metode 1: Erstatte ord med kode i functions.php

Den enkleste måten å bytte ut et ord på tvers av alle innlegg – uten å røre databasen – er å legge en liten funksjon i temaets functions.php. Den henger seg på filteret the_content (teksten i innleggene) og eventuelt the_excerpt (utdragene), og kjører en vanlig søk-og-erstatt på teksten rett før den vises.

Her er grunnkoden:

function erstatt_ord_wps( $text ) {
    $erstatt = array(
        // 'ORD SOM SKAL BYTTES' => 'BYTT DET MED DETTE'
        'wordpress' => '<a href="https://wordpress.org">WordPress</a>',
    );
    $text = str_replace( array_keys( $erstatt ), $erstatt, $text );
    return $text;
}
add_filter( 'the_content', 'erstatt_ord_wps' );
add_filter( 'the_excerpt', 'erstatt_ord_wps' );

Slik leser du koden linje for linje:

  • $erstatt er en liste (array) der venstresiden er ordet som skal byttes ut, og høyresiden er det det skal byttes med.
  • str_replace() er PHP-funksjonen som gjør selve jobben: den finner alle treff og setter inn den nye teksten.
  • add_filter() forteller WordPress at funksjonen skal kjøres hver gang innholdet (the_content) eller utdraget (the_excerpt) hentes fram.

I eksemplet over blir hvert «wordpress» i brødteksten automatisk til en lenke. Vil du lære deg hvordan selve lenkekoden bygges opp, har vi en egen gjennomgang av hvordan du lager en HTML-lenke.

Erstatte flere ord samtidig

Du er ikke begrenset til ett ord. Legg bare flere linjer i arrayet, ett par per ord:

$erstatt = array(
    'firmanavn' => 'Nytt Firmanavn AS',
    'teléfon'   => 'telefon',
    'wordpress' => '<a href="https://wordpress.org">WordPress</a>',
);

str_replace() tar imot hele lista på én gang, så alle byttene skjer i samme operasjon. Dette er praktisk for å rette flere gjennomgående skrivefeil på én gang.

Begrens hvor erstatningen kjører

Et filter på the_content kan kjøre også andre steder enn der du forventer – for eksempel i relaterte innlegg, i feeds eller i utdrag på forsiden. Vil du at erstatningen bare skal skje på selve innleggsvisningen, kan du legge inn en sjekk med betingelser som is_single() og in_the_loop():

function erstatt_ord_wps( $text ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        $erstatt = array(
            'wordpress' => '<a href="https://wordpress.org">WordPress</a>',
        );
        $text = str_replace( array_keys( $erstatt ), $erstatt, $text );
    }
    return $text;
}
add_filter( 'the_content', 'erstatt_ord_wps' );

Dette er den samme fremgangsmåten som den offisielle WordPress-dokumentasjonen anbefaler for the_content-filteret, nettopp for å unngå uønskede bivirkninger andre steder på nettstedet.

Slik legger du koden inn steg for steg

Fremgangsmåten er enkel, men rekkefølgen er viktig – særlig backup først.

1. Ta backup

En feil i functions.php kan gi deg «den hvite dødsskjermen» (White Screen of Death) der hele nettstedet blir utilgjengelig. Ta derfor alltid en sikkerhetskopi av både filer og database før du begynner. Vi har en egen guide om hvordan du tar backup av innholdet i WordPress.

2. Bruk et child-tema

Legger du koden rett i hovedtemaets functions.php, forsvinner den neste gang temaet oppdateres. Bruk derfor et child-tema (undertema), eller en liten egen plugin. Da overlever koden oppdateringer.

3. Rediger filen trygt

Du kan redigere functions.php via FTP/filbehandler i webhotellet, eller via Utseende → Temafil-redigerer i WordPress. FTP er tryggere: har du bare filtilgang, kan du alltid angre ved å bytte filen tilbake, selv om siden skulle låse seg.

4. Lim inn, tilpass og test

Lim inn funksjonen, bytt ut ordene i arrayet, lagre, og åpne et innlegg for å sjekke resultatet. Fungerer noe ikke som det skal, fjerner du bare koden igjen – siden databasen er urørt, er endringen helt reversibel.

Hvorfor endrer ikke koden selve innleggene?

functions.php-metoden endrer ikke innleggene fordi den bare griper inn i visningen. WordPress henter den opprinnelige teksten fra databasen, kjører den gjennom filteret ditt, og viser det ferdige resultatet. Originalteksten i post_content forblir uendret.

Det har både fordeler og ulemper. Fordelen er at det er helt trygt og lett å angre: fjerner du koden, er alt tilbake som før. Ulempen er at erstatningen kjøres på nytt ved hver eneste sidevisning, og at den nye teksten ikke finnes i databasen – den dukker for eksempel ikke opp hvis du søker i administrasjonspanelet, og den følger ikke med hvis du eksporterer innholdet. Skal endringen være endelig, må du gå inn i selve databasen.

Metode 2: Permanent erstatning i databasen

Vil du at endringen skal bli en varig del av innholdet, må du skrive den inn i databasen. Da finnes det tre hovedveier, fra enklest til mest teknisk.

Better Search Replace (plugin – anbefalt for de fleste)

Better Search Replace er en gratis plugin som gjør søk-og-erstatt rett i databasen fra et enkelt grensesnitt, uten at du trenger å røre kode. Du skriver inn søkeordet og erstatningsordet, velger hvilke tabeller det skal kjøres på (vanligvis wp_posts), og starter.

To ting er avgjørende å vite. For det første håndterer pluginen såkalt serialisert data – data der tekstens lengde er lagret som et tall – ved å regne ut lengdene på nytt etter byttet, slik at innstillinger ikke blir ødelagt. For det andre: selv med den støtten kan en feil søkestreng fortsatt skade databasen, og derfor har pluginen en «Run as dry run?»-funksjon. En dry run (tørrkjøring) viser deg nøyaktig hvor mange treff som ville blitt endret, uten å lagre noe. Kjør alltid en tørrkjøring først, og ta backup før den ekte kjøringen. Trenger du inspirasjon til andre nyttige utvidelser, har vi en oversikt over populære WordPress-plugins og hva du bør bruke i dag.

WP-CLI: kommandoen wp search-replace

Har du tilgang til kommandolinjen på serveren, er WP-CLI den kraftigste metoden. Kommandoen wp search-replace bytter ut tekst i hele databasen og håndterer serialisert data intelligent. Den har to flagg du bør kjenne:

  • --dry-run kjører hele operasjonen og viser en rapport per tabell uten å lagre noe. Kjør alltid dette først.
  • --precise tvinger PHP til å behandle alle kolonner. Det er tregere, men mer pålitelig på kompleks serialisert data.

En typisk sekvens ser slik ut:

wp search-replace 'gammelt ord' 'nytt ord' wp_posts --dry-run
wp search-replace 'gammelt ord' 'nytt ord' wp_posts

Først ser du hva som ville blitt endret, deretter kjører du det på ordentlig. Metoden er ideell for utviklere, store nettsteder og flytteprosesser.

Direkte SQL (for viderekomne)

Du kan også kjøre en SQL-spørring direkte i for eksempel phpMyAdmin:

UPDATE wp_posts
SET post_content = REPLACE( post_content, 'gammelt ord', 'nytt ord' );

Dette er raskt, men også mest risikabelt: SQL-metoden tar ikke hensyn til serialisert data, så den kan ødelegge lagrede innstillinger hvis søkestrengen treffer slike felt. Bruk den bare på rene tekstfelt som post_content, og aldri uten en fersk backup. (Husk også ditt eget tabell-prefiks – det er ikke alltid wp_.)

Sammenligning

MetodeEndrer databasen?KreverLett å angre?Best for
functions.php (the_content)Nei – kun visningLitt PHPJa – fjern kodenDynamisk erstatning, lenking av ord
Better Search Replace (plugin)JaIngen kodeNei – krever backupDe fleste brukere, engangsjobb
WP-CLI (wp search-replace)JaKommandolinjeDelvis – bruk –dry-runUtviklere, store nettsteder, flytting
Direkte SQL (phpMyAdmin)JaSQL-kunnskapNei – krever backupAvanserte brukere, rene tekstfelt
Manuelt i editorenJaIngen kodeJa – per innleggFå innlegg, små endringer

Finnes det en innebygd «finn og erstatt» i WordPress?

Nei, WordPress har ingen global «finn og erstatt» for alle innlegg innebygd. Blokkredigeringsverktøyet (Gutenberg) har en søkefunksjon for det innlegget du står i, men ikke på tvers av alle innlegg samtidig. For enkeltinnlegg eller noen få endringer er manuell redigering i editoren ofte raskest og tryggest. Skal du derimot endre det samme ordet i mange innlegg, er det en av de fire metodene over du trenger.

Vanlige feil og fallgruver

Søk-og-erstatt ser enkelt ut, men noen feller går mange i. Her er de vanligste – og hvordan du unngår dem.

  • Store og små bokstaver. str_replace() og SQL sin REPLACE() skiller mellom store og små bokstaver. «WordPress» og «wordpress» er to forskjellige treff. Trenger du å ignorere forskjellen i PHP, bruk str_ireplace() i stedet.
  • Ord inni andre ord. En erstatning treffer også deler av ord. Bytter du «kan» mot noe annet, endres også «kanal», «kano» og «vulkan». Legg til mellomrom rundt ordet, eller vær bevisst på hvor spesifikk søkestrengen er.
  • Ødelagt HTML og lenker. Gjør du et vanlig ord om til en lenke, kan ordet også finnes inne i eksisterende lenker eller attributter, og da brekker koden. Test alltid på et par innlegg før du stoler på resultatet.
  • Serialisert data. Direkte SQL kan ødelegge serialiserte verdier (ofte temainnstillinger og widget-data). Bruk Better Search Replace eller WP-CLI, som regner om lengdene, når slike felt kan være involvert.
  • Ytelse. En the_content-erstatning kjører ved hver sidevisning. Én enkel erstatning merkes ikke, men lange lister med mange ord kan gjøre siden tregere. For store, varige endringer er databasemetoden bedre.
  • Ingen backup. Den dyreste feilen av alle. Både functions.php-feil og en gal søkestreng kan sette siden ut av spill. Ta backup før hver endring.

Når bør du bruke hvilken metode?

Valget avhenger av om endringen skal være midlertidig eller permanent, og hvor teknisk du er:

  • Vil du lenke eller fremheve et ord dynamisk (for eksempel gjøre et nøkkelord til en lenke overalt): bruk functions.php-metoden. Den er reversibel og endrer ikke innholdet.
  • Skal du rette en skrivefeil eller bytte navn for godt, og er ikke så teknisk: bruk Better Search Replace med tørrkjøring.
  • Jobber du på kommandolinjen eller flytter et nettsted (for eksempel bytter domene i alle lenker): bruk WP-CLI wp search-replace.
  • Har du bare noen få innlegg å endre: rediger dem manuelt i editoren – det er raskest og tryggest.

Er du i gang med å bygge og finpusse temaet samtidig, finner du flere nyttige grep i guiden vår om WordPress-design for norske bloggere.

Sikkerhet, backup og angremuligheter

Uansett metode gjelder tre grunnregler. Ta backup av filer og database før endringen. Test på et par innlegg eller en kopi (staging) før du kjører på hele nettstedet. Og kjør en tørrkjøring når verktøyet tilbyr det, slik at du ser omfanget før noe skrives.

Husk også at databasen er hjertet i WordPress-installasjonen din. Gode rutiner for tilgang og oppdateringer hører med – les gjerne om hva du bør gjøre for å beskytte WordPress-siden mot angrep. Den beste forsikringen mot en mislykket søk-og-erstatt er likevel enkel: en fersk backup du vet fungerer.

Vanlige spørsmål (FAQ)

Endrer koden i functions.php selve innleggene mine?

Nei. Koden griper bare inn i visningen via the_content-filteret og bytter ut ord mens siden bygges. Originalteksten i databasen er urørt, og fjerner du koden, er alt tilbake som før.

Hvordan erstatter jeg et ord permanent i alle innlegg?

Bruk en databasemetode. Enklest er pluginen Better Search Replace med tørrkjøring først. Er du komfortabel på kommandolinjen, kan du bruke WP-CLI med wp search-replace. Ta alltid backup før du kjører.

Skiller søk-og-erstatt mellom store og små bokstaver?

Ja. Både str_replace() i PHP og REPLACE() i SQL er sensitive for store og små bokstaver. «Ord» og «ord» er forskjellige treff. Trenger du å ignorere forskjellen i PHP, bruker du str_ireplace().

Kan jeg ødelegge nettstedet med dette?

Ja, det er mulig. En feil i functions.php kan gjøre siden utilgjengelig, og en gal søkestreng i databasen kan skade innhold eller serialiserte innstillinger. Derfor: backup først, tørrkjøring der det tilbys, og test på et par innlegg før du kjører på alt.

Har WordPress en innebygd «finn og erstatt» for alle innlegg?

Nei. Editoren har søk innenfor det ene innlegget du redigerer, men ingen global funksjon på tvers av alle innlegg. For flere innlegg trenger du kode, en plugin, WP-CLI eller SQL.