Отключение внутреннего крона WordPress
Причины отключения внутреннго крона: не всегда срабатывает, срабатывает многократно для посещаемых ресурсов, протухают запланированные публикации, задачи не успевают выполниться за отведенное им сервером время (обычно 30 секунд). Серверный же крон лишен всех этих недостатков.
Переходим от слов к делу
Первым шагом мы отключаем внутренний крон WordPress. Для этого в файле конфигурации wp-config.php
добавляем строку:
define( 'DISABLE_WP_CRON', true );
Затем создаём задачу для серверного крона. В директорию /etc/cron.d/
добавляем файл wp-cron
с таким содержимым:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# WordPress Cron Task:
*/15 * * * * $USER wget -O - -q -t 1 "https://www.kobzarev.com/wp-cron.php?doing_wp_cron=1" > /dev/null 2>&1
# Или через Curl
*/15 * * * * $USER curl https://www.kobzarev.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
# Можно также напрямую через PHP:
*/15 * * * * $USER php /home/$USER/public_html/wp-cron.php > /dev/null 2>&1
# Или через WP-CLI
*/15 * * * * $USER wp cron event run --due-now --path=/home/$USER/public_html > /dev/null 2>&1
Теперь задачи WordPress будет запускать серверный крон каждые 15 минут.
Что в данном случае означает /dev/null 2>&1
у меня такой код в бегете /usr/bin/php ~/site/public_html/wp-cron.php > /dev/null 2>&1 это правильно?
Перенаправление вывода скрипта в никуда, чтобы вы каждую минуту не получали писем на мыло администратора о том, что крон запущен.