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
.
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-replace
commando.