Hemsida » Wordpress » Massa Sök och ersätt WordPress-databaser - det enkla sättet

    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.

    IMAGE: Sequel Pro, söker databasvärde

    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ättkommando.