Hjemmeside » WordPress » Mass Find & erstat WordPress Databaser - Den nemme måde

    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.

    IMAGE: Sequel Pro, søgning database værdi

    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-replacekommando.