Startpagina » WordPress » Massa zoeken en vervangen WordPress-databases - The Easy Way

    Massa zoeken en vervangen WordPress-databases - The Easy Way

    Er zijn verschillende gelegenheden waar we moeten verander URL's in onze WordPress-websitedatabase. We moeten dit bijvoorbeeld doen na het migreren van een WordPress-database van één site, bijvoorbeeld van de http://acme.com externe productiesite, naar de http://acme.dev lokale ontwikkelingswebsite op onze computer.

    WordPress.org host een groot aantal plug-ins, zoals WP DBManager en WP Migrate DB, en er zijn ook een aantal hulpprogramma's van derden waarmee u import database gemakkelijk. Het lastige is dat het moet verander elke URL-instantie in de database.

    Na het migreren van de database, URL's erin wees nog steeds naar de oude site, in dit geval naar acme.com. Mogelijk vindt u de oude URL in de wp_options tabel, ingesteld als de waarde van de SITEURL en huis opties, en het is waarschijnlijk ook ingebed in verschillende andere rijen en tabellen in de database. Deze oude URL's kunnen uiteindelijk voorkomen dat uw site correct werkt, dus u moet dit doen verander ze naar de nieuwe URL, in ons voorbeeld aan acme.dev.

    IMAGE: Sequel Pro, zoeken naar databasewaarde

    Op dit moment heeft u toegang tot onze ontwikkelsite op acme.dev zal gewoon leiden naar een lege pagina.

    Dus hoe kunnen we al deze URL's in de database veranderen??

    Een SQL-query uitvoeren

    Gewoonlijk zouden mensen de volgende SQL Query uitvoeren die de waarden van de SITEURL en huis opties in de wp_options tafel.

     UPDATE wp_options SET option_value = replace (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' OR option_name = 'siteurl'; 

    Vervolgens gebruiken ze een andere SQL Query om alle URL-occurrences in de. Te vervangen wp_posts tafel, namelijk in de POST_CONTENT kolom van elke rij.

     UPDATE wp_posts SET post_content = replace (post_content, 'http://acme.com', 'http://acme.dev'); 

    Het uitvoeren van deze query's is een werkbare oplossing, maar is tegelijkertijd niet handig om te doen. Het zou zelfs zenuwslopend kunnen zijn en zien hoe de database in de war raakt als gevolg van een eenvoudig overzicht in de query.

    Gebruikmaken van WP-CLI

    Een andere route die we kunnen doen, en waarvan ik heb ontdekt dat ze een handiger alternatief zijn, is door gebruik maken van de WP-CLI-opdrachtregel. Dit betekent dat u WP-CLI moet hebben geïnstalleerd.

    Ervan uitgaande dat u WP-CLI hebt geïnstalleerd en de wp commando toegankelijk als het alias, navigeer naar de map waar uw WordPress-sitebestanden zich bevinden.

    Voer vervolgens de volgende opdracht uit:

    wp search-replace 'http://acme.com "http://acme.dev

    De eerste parameter, 'Http://acme.com', is de oude invoer die moet worden vervangen door de tweede, 'Http://acme.dev'.

    De opdrachtregel doorzoekt alle tabellen binnen de database, niet alleen de POST_CONTENT kolom en wp_options tabel en vervang elke instantie van de invoer die door de parameters van de opdracht is gegaan.

    Zoals je kunt zien aan de bovenstaande screenshot, zijn in totaal 225 vervangingen gemaakt. En we hebben het gedaan via een eenvoudige opdrachtregel.

    Ik denk dat het de moeite waard is te vermelden dat we de wp search-replace opdracht, niet alleen voor het vervangen van URL's, maar voor elk onderdeel waarde opgeslagen in de database. We kunnen de bewerking ook beperken tot een bepaalde tabel door de tabelnaam als de vierde parameter door te geven, als volgt:

    wp search-replace '.jpg' .webp 'wp_posts

    Als u de bovenstaande opdracht uitvoert, wordt alleen doorzocht wp_posts, de tabel waarin onze inhoud wordt opgeslagen - berichten, pagina's, enz. - en vervang de afbeeldingsextensie van .jpg naar .webp.

    WP-CLI maakt een verwarde SQL-bewerking meer intuïtief en u kunt er op een handigere manier mee werken. Als u uw opdrachten wilt verfijnen, bekijk dan de documentatie van WP-CLI, die u een lijst met opties geeft om een ​​meer geavanceerde bewerking uit te voeren met de wp search-replacecommando.