#!/bin/bash # # wordpress-tools # https://git.stack-source.com/msb/wordpress-tools # Copyright (c) 2022 Matthew Saunders Brown \ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # must be root, will su to vhost users for wp cron runs if [ "$USER" != "root" ]; then exec sudo $0 fi declare -a virtualhostExclusionArray # optionally add virtualhosts to virtualhostExclusionArray to have them skipped # create virtualhostArray cd /srv/www virtualhostArray=(`ls -1|grep -v ^html$`) for VHOST in "${virtualhostArray[@]}" do # check if VHOST has been added to exclustion array if [[ ! " ${virtualhostExclusionArray[@]} " =~ " ${VHOST} " ]]; then # basic check for WP install if [ -f /srv/www/$VHOST/html/wp-config.php ]; then VHOST_USER=$(stat -c '%U' /srv/www/$VHOST) # confirm that WP really is installed if $(su -c "wp core is-installed --path=/srv/www/$VHOST/html/" $VHOST_USER); then # run cron for VHOST as VHOST_USER /usr/bin/logger --tag wp-cron "running wp-cli cron for $VHOST as $VHOST_USER" su -c "/usr/local/bin/wp cron event run --due-now --quiet --path=/srv/www/$VHOST/html/" $VHOST_USER fi fi fi done