Half Manual Automated WordPress Site Upgrade Script

Written by James McDonald

September 8, 2021

This script finds all your wordpress sites under a specific parent directory and then loops through them and prompts you to accept or reject an upgrade for plugins, themes and wordpress core.

# find all WordPress installs
WP_SITES=`find /path/to/your/sites/root -regex '.*web/wp-config\.php'`

# path to wp-cli
WP=/usr/local/bin/wp

for i in $WP_SITES
do
        # get the full path to the wp install
        WP_DIR=$(dirname $i)

        # get the owner so we run the upgrade as the correct user
        OWNER=`stat -c %U $WP_DIR`

        echo "Owner $OWNER"

        # so we can echo the installation we are upgrading
        SITE_URL=`$WP --path=$WP_DIR option get siteurl`

        # list the plugins and available upgrades
        $WP --path=$WP_DIR plugin list
        echo -n "Do you want to update all plugins for $SITE_URL: [N/y] "
        read R
        case $R in
                Y|y)
                        echo "Running update all plugins for $SITE_URL"
                        sudo -u $OWNER $WP --path=$WP_DIR plugin update --all
                        ;;
                *)
                echo "Skipping update all for $SITE_URL"
                ;;
        esac
       # next do themes
        $WP --path=$WP_DIR theme list
        echo -n "Do you want to update all themes for $SITE_URL: [N/y] "
        read R
        case $R in
                Y|y)
                        echo "Running update of all themes for $SITE_URL"
                        sudo -u $OWNER $WP --path=$WP_DIR theme update --all
                        ;;
                *)
                        echo "Skipping update of all themes for $SITE_URL"
                        ;;
        esac

        # finally wordpress core update
        $WP --path=$WP_DIR core check-update
        echo -n "Do you want to update wp core for $SITE_URL: [N/y] "
        read R
        case $R in
                Y|y)
                        echo "Running wp core update for $SITE_URL"
                        sudo -u $OWNER $WP --path=$WP_DIR core update
                        ;;
                *)
                        echo "Skipping update of core for $SITE_URL"
                        ;;
        esac

done

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…

Ubuntu on Hyper-v

It boils town to installing linux-azure # as root or sudo apt-get update apt-get install linux-azure...