Da es mir des öfteren mal passiert, habe ich nun nach Jahren endlich mal ein Skript für den SQL WordPress Umzug geschrieben. Bisher habe ich immer die SQL-Queries, um die alte URL durch die neue zu ersetzen, ergooglet und mühsam mit Copy & Paste die Pfade und ggf. Präfixe ausgetauscht.
Damit ist nun Schluss, denn das Bash-Skript fragt die für mich wichtigsten Daten ab, kann einfach erweitert werden und ist schnell ausgeführt.
Der Code
#!/bin/bash # # This script is used to update database url entries for wordpress. # # © Nick Böcker <https://nick-hat-boecker.de> 2019 # User input mysql username read -p "Enter mySQL username [root]: " USER USER=${USER:-root} # User input mysql database read -p "Enter database name: " DATABASE # User input mysql database prefix read -p "Enter database prefix [wp_]: " PREFIX PREFIX=${PREFIX:-wp_} # User input mysql new and old url read -p "Enter old url: " OLD_URL read -p "Enter new url: " NEW_URL # Execute command with given credentials and parameters mysql --user="$USER" --database="$DATABASE" --execute="UPDATE ${PREFIX}posts SET guid = REPLACE(guid, '${OLD_URL}', '${NEW_URL}'); UPDATE ${PREFIX}posts SET post_content = REPLACE(post_content, '${OLD_URL}', '${NEW_URL}');UPDATE ${PREFIX}postmeta SET meta_value = REPLACE(meta_value, '${OLD_URL}', '${NEW_URL}'); UPDATE ${PREFIX}options SET option_value = REPLACE(option_value, '${OLD_URL}', '${NEW_URL}');" echo 'Done'
Folgende Daten werden abgefragt und sind für den WordPress Umzug essentiell:
- mySQL Username
- mySQL Databasename
- mySQL Databaseprefix (standardmäßig „_wp“)
- die alte URL, die aktuell in der Datenbank steht
- die neue URL, die die alte ersetzen soll
Am Ende werdet ihr dann noch nach eurem mySQL Passwort gefragt und schon führt das Skript die benötigten SQL Befehle aus.