I’m more of a Network Monkey, but whenever I can provision something just using an ssh session I smile. Many hosts use WP-CLI already and I’ve installed it on my VPS too.
This morning I wrote up a small script to go to my test vhost directory and did the following.
- Install a blank WordPress site
- Update some settings
- Fix my user display name
- Make sure the plugins and themes are up to date (Akismet needed an update)
- Delete the default post and page
- Install, activate and configure the Wapuuvatar plugin
- Install and activate the Baskerville theme
- Imported the Theme Unit Test data
- Cleaned up after the import
- Used search and replace to make all my http URLs into https
All this was performed without using a mouse or web GUI. (Okay, I checked the avatar setting via /options.php, but I didn’t have to.)
Here’s the script with sensitive details changed.
#!/bin/bash cd /my/notsecret/www/vhosts/bang.dn7.me # Setup a new WordPress installation wp core download wp core config --dbname=tothemoon \ --dbuser=testuser \ --dbpass=3c962761afbf9ab40a2e75346809c8cf wp core install --admin_user=jan \ --admin_password=Rea11y*ot7y^assWiRd \ --firstname.lastname@example.org \ --url=bang.dn7.me \ --title="Bang! Boom! Pow!" # Update some options and my account info wp option update blogdescription \ "What could possibly go wrong?" wp option update comment_moderation 1 wp option update comments_notify 0 wp option update moderation_notify 0 wp option update comment_whitelist 0 wp user update 1 --first_name="Jan" \ --last_name="Dembowski" \ --display_name="Jan Dembowski" # Make sure plugins and themes are all up to date wp plugin update --all wp theme update --all # Clean up the default post and page wp post delete 1 --force wp post delete 2 --force # Wapuuvatar is cool. Install, activate # and set to the default avatar wp plugin install wapuuvatar --activate wp option update avatar_default dwapuuvatar # Let's play with the Baskerville theme wp theme install baskerville --activate # Now to import the theme unit test data wp plugin install wordpress-importer --activate curl -O https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml wp import theme-unit-test-data.xml --authors=create # Clean up in aisle seven wp plugin deactivate wordpress-importer wp plugin delete wordpress-importer rm theme-unit-test-data.xml # My test site is also TLS so I'll fix # all the things to point to the encrypted URL wp search-replace http://bang.dn7.me https://bang.dn7.me # All done
I previously dropped the test installation’s database and created a new empty one. A quick “rm -rf *” (which wise people never do) in the right vhost directory and I ran “bash install-bang.sh”.
It works like a charm. Smart web hosts can and do tie WP-CLI into their provisioning setup. I happened to setup my vhost with TLS and mysql in advance but with a little backend work this can be easily automated.
If you have a test server to play with then give WP-CLI a try. You’ll get a better understanding of both WordPress and the command line.