Mass Find & erstat WordPress Databaser - Den nemme måde
Der er flere lejligheder, hvor vi skal Skift webadresser i vores WordPress-website database. For eksempel skal vi gøre dette efter at have migreret en WordPress-database fra et websted, f.eks. fra http://acme.com
fjern produktionssted til http://acme.dev
lokal udvikling hjemmeside på vores computer.
WordPress.org er vært for et stort antal plugins, som WP DBManager og WP Migrate DB, og der er også en række tredjeparts værktøjer, der giver dig mulighed for import database let. Den vanskelige del er nødt til at ændre hver URL-forekomst inde i databasen.
Efter migrering af databasen, URL'er inde i den peger stadig på det gamle sted, i dette tilfælde til acme.com
. Du kan finde den gamle URL i wp_options
tabel, angivet som værdien af SITEURL
og hjem
indstillinger, og det er sandsynligvis også indlejret gennem flere andre rækker og tabeller i databasen. Disse gamle webadresser kan i sidste ende forhindre, at dit websted kører korrekt, så du skal skift dem til den nye webadresse, i vores eksempel til acme.dev
.
På dette tidspunkt får du adgang til vores udviklingssted på acme.dev
vil simpelthen lede til en tom side.
Så hvordan ændrer vi alle disse webadresser i databasen?
At køre en SQL-forespørgsel
Normalt vil folk køre følgende SQL Query, som erstatter værdierne for SITEURL
og hjem
indstillinger i wp_options
bord.
OPDATER wp_options SET option_value = erstat (option_value, 'http://acme.com', 'http://acme.dev') HVOR option_name = 'home' ELLER option_name = 'siteurl';
Derefter bruger de en anden SQL Query til at erstatte alle URL-forekomster i wp_posts
bord, nemlig i POST_CONTENT
kolonne af hver række.
OPDATER wp_posts SET post_content = erstat (post_content, 'http://acme.com', 'http://acme.dev');
At køre disse forespørgsler er en brugbar løsning, men samtidig er det ikke praktisk at gøre. Det kan endda være nervepirrende, og se, hvordan databasen kan slå haywire på grund af et simpelt tilsyn i forespørgslen.
Levering af WP-CLI
En anden rute vi kan gøre, og som jeg har fundet ud af at være et mere praktisk alternativ, er ved udnytte WP-CLI kommandolinjen. Dette betyder at du skal have WP-CLI installeret.
Forudsat at du har installeret WP-CLI og har wp
kommando tilgængelig som aliaset, navigere til det bibliotek, hvor dine WordPress-webstedsfiler er bosat.
Kør derefter følgende kommando:
wp search-erstatte 'http://acme.com' http://acme.dev
Den første parameter, 'Http://acme.com'
, Er den gamle post til at blive erstattet med den anden, 'Http://acme.dev'
.
Kommandolinjen søger gennem alle tabeller i databasen, ikke kun den POST_CONTENT
kolonne og wp_options
bord og erstat alle tilfælde af indgangen passeret gennem parametrene for kommandoen.
Som du kan se fra ovenstående screenshot, er der foretaget i alt 225 udskiftninger. Og vi har gjort det gennem en simpel kommando.
Jeg synes, det er værd at nævne, at vi kan bruge wp search-replace
kommando, ikke kun for at erstatte webadresser, men noget stykke af værdi lagret i databasen også. Vi kan også begrænse operationen til et bestemt bord ved at overføre tabelnavnet som fjerde parameter som følger:
wp search-replace '.jpg' .webp 'wp_posts
Hvis du kører ovenstående kommando, vil den kun søge igennem wp_posts
, tabellen, der gemmer vores indhold - indlæg, sider osv. - og erstat billedudvidelsen fra .jpg
til .WebP
.
WP-CLI gør en sammenfaldende SQL-operation ser mere intuitiv ud, og du kan arbejde med det på en mere bekvem måde. Hvis du vil finjustere dine kommandoer, skal du kigge på WP-CLIs dokumentation, der giver dig en liste over muligheder for at udføre en mere avanceret operation med wp search-replace
kommando.