Massa Sök och ersätt WordPress-databaser - det enkla sättet
Det finns flera tillfällen där vi måste ändra webbadresser i vår WordPress webbplats databas. Vi behöver till exempel göra detta efter att ha flyttat en WordPress-databas från en webbplats, t.ex. från http://acme.com
avlägsen produktionsplats, till http://acme.dev
lokal utveckling webbplats på vår dator.
WordPress.org är värd för ett stort antal plugins, som WP DBManager och WP Migrate DB, och det finns också ett antal verktyg från tredje part som låter dig importdatabas lätt. Den knepiga delen måste ändra varje URL-förekomst inuti databasen.
Efter att migrera databasen, webbadresser inuti den peka fortfarande på den gamla sajten, i detta fall till acme.com
. Du kan hitta den gamla webbadressen i wp_options
bord, inställt som värdet av SITEURL
och Hem
alternativ, och det är förmodligen också inbäddat i flera andra rader och tabeller i databasen. Dessa gamla webbadresser kan så småningom förhindra att din webbplats körs korrekt, så du behöver ändra dem till den nya webbadressen, i vårt exempel till acme.dev
.
Vid denna tidpunkt får du tillgång till vår utvecklingsplats på acme.dev
kommer helt enkelt leda till en tom sida.
Så hur ändrar vi alla dessa webbadresser i databasen?
Kör en SQL-fråga
Vanligtvis skulle folk springa följande SQL Query som ersätter värdena för SITEURL
och Hem
alternativ i wp_options
tabell.
UPPDATERA wp_options SET option_value = ersätt (option_value, 'http://acme.com', 'http://acme.dev') VAR option_name = 'home' ELLER option_name = 'siteurl';
Därefter använder de en annan SQL-fråga för att ersätta alla URL-händelser i wp_posts
bord, nämligen i POST_CONTENT
kolumnen i varje rad.
UPPDATERA wp_posts SET post_content = ersätt (post_content, 'http://acme.com', 'http://acme.dev');
Att driva dessa frågor är en fungerande lösning, men samtidigt är det inte lätt att göra. Det kan vara en gång nervös, se hur databasen kan bli haywire på grund av ett enkelt övervakning inom frågan.
Leverans av WP-CLI
En annan rutt vi kan göra, och som jag har funnit vara ett mer praktiskt alternativ, är med utnyttja WP-CLI-kommandoraden. Det betyder att du måste ha WP-CLI installerad.
Förutsatt att du har installerat WP-CLI och har wp
kommandot tillgängligt som alias, navigera till katalogen där dina WordPress-webbplatsfiler är bosatta.
Kör sedan följande kommando:
wp search-ersätt "http://acme.com" http://acme.dev
Den första parametern, 'Http://acme.com'
, är den gamla posten att ersättas med den andra, 'Http://acme.dev'
.
Kommandoraden kommer att söka igenom alla tabellerna i databasen, inte bara POST_CONTENT
kolumn och wp_options
bord och ersätt varje instans av posten passerade genom parametrarna för kommandot.
Som du kan se från ovanstående skärmdump har totalt 225 ersättningar gjorts. Och vi har gjort det genom en enkel kommando.
Jag tycker att det är värt att nämna att vi kan använda wp sök-ersätt
kommandot, inte bara för att ersätta webbadresser, utan också en del av värde lagras i databasen också. Vi kan också begränsa operationen till ett visst bord genom att skicka tabellnamnet som den fjärde parametern, enligt följande:
wp search-replace '.jpg' .webp 'wp_posts
Om du kör ovanstående kommando kommer det bara att söka igenom wp_posts
, tabellen som lagrar vårt innehåll - inlägg, sidor etc. - och ersätt bildförlängningen från .jpg
till .webp
.
WP-CLI gör en trassig SQL-operation ser mer intuitiv ut, och du kan arbeta med det på ett bekvämare sätt. Om du vill finjustera dina kommandon, ta en titt på WP-CLIs dokumentation, som ger dig en lista över alternativ för att utföra en mer avancerad operation med wp sök-ersätt
kommando.