Sök och ersätt i WordPress-databasen
WordPress sparar inte adressen till din webbplats på ett enda ställe. Den finns i inställningarna, men också ordagrant i dina inlägg, vid bilder och i inställningar för teman, tillägg och widgetar. Byter du adress måste du därför ersätta den i hela databasen. Här läser du hur du gör det säkert, och varför ett vanligt SQL-kommando kan förstöra din webbplats.
När behöver du det här?
- Din webbplats låg på http och körs nu på https, och du ser blandat innehåll (en sida på https som laddar delar via http). Se även Inget hänglås eller "inte säker": åtgärda mixed content.
- Du flyttar din webbplats till en annan domän, eller från en tillfällig adress till din riktiga domän.
- Du har gjort en kopia för hand på en annan adress, till exempel en testsajt.
Klonar du en webbplats med Installatron eller Website Manager justerar den själv adresserna i kopian. Se Klona och skapa en testmiljö (staging). Flyttar du bara till ett annat webbhotell med samma domän behöver ingenting ändras.
Varför inte en enkel SQL REPLACE?
I phpMyAdmin kan du ersätta all text med ett enda SQL-kommando. Gör inte det för adresser. Många inställningar sparas serialiserade: PHP lägger till längden på varje text. Det ser ut så här:
s:27:"http://example.com/logo.png";
s:27 betyder: här följer en text på 27 tecken. Gör du om den till https:// blir texten 28 tecken lång, men det står fortfarande 27. PHP kan då inte längre läsa värdet och inställningen försvinner i det tysta. Du ser då till exempel en tom meny, en logotyp som försvunnit eller widgetar som är borta. Använd därför ett verktyg som uppdaterar längderna.
Först en säkerhetskopia
Sök och ersätt sker direkt och har ingen papperskorg. Exportera din databas innan, se Exportera en databas, eller gör en extra säkerhetskopia med ett klick i WebOké Backups, se WebOké Backups: visa, återställa eller ladda ner en backup.
Sätt 1: WP-CLI i Terminal eller via SSH
WP-CLI är WordPress officiella kommandoradsprogram. Hos oss använder du det som kommandot wp i Terminal i DirectAdmin eller via SSH. Det har du bara i paketen med SSH. Vilka paket det är läser du i Terminal i din webbläsare.
- Öppna Terminal och gå till mappen för din WordPress:
cd domains/example.com/public_html - Se först vad som skulle ändras, utan att ändra något:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Du ser per tabell hur många ersättningar det skulle bli. - Stämmer det, kör då samma kommando utan
--dry-run.
Några val i kommandot:
- Utan extra flagga arbetar WP-CLI med de tabeller som WordPress känner till. Använder ett tillägg egna tabeller med samma prefix (till exempel
wp_), lägg då till--all-tables-with-prefix. Flaggan--all-tablespåverkar alla tabeller i databasen, även de som hör till en annan webbplats som råkar ligga där. --skip-columns=guidlämnar kolumnenguidmed inläggens fasta id:n orörd. WordPress rekommenderar att aldrig ändra den, annars visar flödesläsare gamla inlägg som nya igen.- Går något fel med komplicerade inställningar fungerar
--preciselångsammare men grundligare.
Sätt 2: ett tillägg
Har du inte Terminal eller SSH, använd då ett tillägg för sök och ersätt som stöder serialiserade data. Det finns flera sådana i tilläggskatalogen på wordpress.org. Läs beskrivningen när du väljer: det ska stå att tillägget hanterar serialiserade data korrekt. Använd även här testläget först om tillägget har ett, och ta bort tillägget när du är klar. Se även Välja, bedöma och rensa bland WordPress-tillägg.
http:// eller https:// framför. Ersätter du bara example.com ändrar du även e-postadresser som info@example.com och andra texter där namnet förekommer. Var också uppmärksam på ett snedstreck i slutet: ersätter du https://example.com/ med https://example.net klistras adresserna ihop.Bara WordPress-adressen och webbplatsadressen?
Kommer du inte längre in i administrationen efter en ändring, eftersom WordPress skickar dig till fel adress? Ändra då först bara raderna siteurl och home i tabellen wp_options (prefixet wp_ kan vara ett annat hos dig). Det är vanliga texter som du kan ändra i phpMyAdmin. Hur det går till läser du i Öppna och använda phpMyAdmin. Därefter gör du resten med WP-CLI eller ett tillägg.
Efteråt
- Töm cachen i ditt cachetillägg och i din webbläsare.
- Ger sidor 404, spara då en gång under Inställningar > Permalänkar. Se Min webbplats fungerar inte efter uppladdning eller flytt.
- Kontrollera några sidor, din meny, din logotyp och ett formulär. Titta med F12 i konsolen om det fortfarande finns meddelanden om blandat innehåll.
Läs mer
- wp search-replace på developer.wordpress.org (engelska)
- Flytta WordPress för hand: filer, databas och wp-config.php
Vill du lära dig mer? Gå den kostnadsfria WordPress-kursen, lektion 3.2 www, vidarebefordran och blandat innehåll eller lektion 9.5 Flytta en WordPress-webbplats.
