wordpress-tools/sbin/wp-cron.sh
Matthew Saunders Brown 8bf288e2c7 add local config option
2023-09-11 15:38:41 -07:00

45 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# wordpress-tools
# https://git.stack-source.com/msb/wordpress-tools
# Copyright (c) 2022 Matthew Saunders Brown <matthewsaundersbrown@gmail.com>\
# 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
# create empty virtualhostExclusionArray array (any domains added to this array will be skipped)
declare -a virtualhostExclusionArray
# create virtualhostArray listing all virtualhost on the server
cd /srv/www
virtualhostArray=(`ls -1|grep -v ^html$`)
# check for local config, which can be used to override either of the above arrays
if [[ -f /usr/local/etc/wp-cron.conf ]]; then
source /usr/local/etc/wp-cron.conf
# conf file could contain either one or both arrays, configured like this:
#virtualhostArray=("example.com" "example.net")
#virtualhostExclusionArray=("example.org")
fi
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