My wife’s website is built on
Wordpress. It uses a small number of plugins, and I’ve
tested many plugins over the years; all those plugins need to be installed, and
of course Wordpress core, plugins, and themes need to be upgraded when new
versions are released. This isn’t difficult (download core/plugin/theme, extract
zip file in the correct directory) but it’s tedious so it’s ideal for
automating. I wrote
wordpress-install
to do this; it’s not the most elegant code because it has to deal with paths and
URLs being different for each supported type, but it works. It requires the
Wordpress install to be inside a git
repository so that changes can be
reverted if necessary, though I’ve rarely needed to revert an upgrade so the
tool doesn’t support reverting - you need to use git revert
. You can
optionally choose a specific version of the core/plugin/theme to install, so you
could use that as a mechanism to downgrade; by default the latest version is
installed. It uses the tool described in Checking a git client is
clean to check that there aren’t any
uncommitted changes in the client before performing the upgrade, and commits all
changes after the upgrade.
Usage:
# Upgrade Wordpress core:
wordpress-install ~/dev.arianetobin.ie/ wordpress
# Upgrade akismet plugin:
wordpress-install ~/dev.arianetobin.ie/ plugin akismet/
# Upgrade akismet plugin to a specific version:
wordpress-install ~/dev.arianetobin.ie/ plugin akismet/ 4.0.8
# Upgrade twentyfourteen theme:
wordpress-install ~/dev.arianetobin.ie/ theme twentyfourteen