Skip to content

Instantly share code, notes, and snippets.

@c00kiemon5ter
Created July 22, 2018 19:19
Show Gist options
  • Save c00kiemon5ter/67dcd152148ef33ea7aed85fcec47caa to your computer and use it in GitHub Desktop.
Save c00kiemon5ter/67dcd152148ef33ea7aed85fcec47caa to your computer and use it in GitHub Desktop.
Migrate a WordPress multisite from http to https using wp-cli
#!/bin/sh
set -e
set -x
_prog_name="${0##*/}"
LOGFILE="/tmp/${_prog_name}.log"
# XXX change wp_root to match the root of your multisite wordpress installation
wp_root='/var/www/wordpress-multisite-root-directory/'
alias wp="wp --path=${wp_root}"
log() {
msg="$*"
datetime="$(date --utc --iso-8601='ns')"
printf -- ':: %s %s\n' "$datetime" "$msg"
}
convert_blog() {
blog_id="$1"
url="$2"
domain="${url#*:}"
domain="${domain#//}"
domain="${domain%/}"
wp search-replace \
--url="${domain}" \
"http://${domain}" "https://${domain}" \
"wp_${blog_id}_*" \
--recurse-objects \
--skip-columns=guid \
--network
}
convert_blogs() {
wp site list --fields=blog_id,url --format=table \
| while read -r blog_id url _
do
log "start processing blog $blog_id $url"
if test "$blog_id" -gt 0
then convert_blog "$blog_id" "$url"
else log "skipping blog $blog_id $url"
fi
log "end processing blog $blog_id $url"
done
}
run() {
log 'start process'
convert_blogs
log 'end process'
}
run 2>&1 | tee -a "${LOGFILE}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment