Описанный способ использования файлов WP Super Cache в nginx оказался очень хорош, настолько хорош, что перестали нормально работать запланированные события: отсроченная публикация постов, очистка кеша, BackWPup. Все дело в вызовах cron. WordPress устроен так, что при выполнении PHP проверяется очередь заданий, если в очереди что-то есть, то действие выполняется. А так как вызовов PHP стало ничтожно мало, то пришлось настраивать дополнительные вызовы php сервером.

Планирование вызовов wp-cron.php

wp-cron.php специальный файл, который при каждом своем вызове запускает выполнение текущей очереди заданий.

Самый простой способ вызова — скачать его через wget. Я настроил проверку на каждые 10 минут. Для этого в консоли вызываем редактор расписаний:

Select Code
sudo crontab -e

И вписываем туда вызовы

Select Code
5 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

15 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

25 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

35 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

45 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

55 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

Либо можно сделать тоже в одну строку

Select Code
5,15,25,35,45,55 * * * * wget http://tigors.net/wp-cron.php > /dev/null 2>&1

2>&1 > /dev/null отправляет вывод в пустоту. Учитывая, что wp-cron не возвращает текст, то писать в лог особого смысла нет.

Отключение WP-Cron в обычных вызовах

Если вызов wp-cron по расписанию настроен, то логично убрать вызов cron при запросах от пользователей, чтобы не тратить ресурсы.

В файле wp-config.php вписываем новую строчку.

Select Code
define('DISABLE_WP_CRON', true);

Теперь при выводе страниц расписания проверятся не будут.