Reset WordPress to Default

A common customer request I get is to reset a WordPress staging site back to its default state. I’ve done this manually quite a few times and decided I should just script it. The following bash script will drop all database tables, install a fresh copy of WordPress and remove all themes, plugins and uploads. The only thing that needs configured is the admin_email and admin_user in order for the WordPress backend to be accessible. 

# Reset WordPress to default

admin_email=changeme@email-provider.tld
admin_user=changeme

url=$( wp option get home )
title=$( wp option get blogname )

wp db reset --yes
wp core download --force
wp core install --url=$url --title="$title" --admin_user=$admin_user --admin_email=$admin_email
wp theme install twentytwentyone --force --activate
wp theme delete $( wp theme list --field=name )
wp plugin delete --all
rm -rf wp-content/mu-plugins/
mkdir wp-content/mu-plugins/
rm -rf wp-content/uploads/
mkdir wp-content/uploads/

This works great on Kinsta. Additionally for Kinsta I recommend installing their caching plugin. This can easily be scripted as shown here.

wget https://kinsta.com/kinsta-tools/kinsta-mu-plugins.zip
unzip kinsta-mu-plugins.zip -d wp-content/mu-plugins/
rm kinsta-mu-plugins.zip