Как добавить Планировщик задач (Cron Job) в WordPress

Планировщики задач (Cron Jobs) – это то, что мы используем каждый день, даже если мы об этом и не знаем. Они запускаются за сценой, наполняя жизнью наши любимые сайты. В этом уроке мы обсудим Cron задачи в целом, уникальные задания в WordPress, и рассмотрим базовый метод добавления планировщика задач в WordPress.

 

 

Что такое Планировщик задач (Cron Job)?

В общем, Cron – это утилита, которая помогает запланировать выполнение команд или скриптов в определенное время. Задачи Cron – это результирующие задачи, и если их перевести на человеческий язык, они сообщают серверу что-то вроде «запускать файл file.php каждый день в полночь». Планировщик задач – это простой способ настроить автоматический запуск задачи, либо на разовой, либо на постоянной основе.

Примером пользы от планировщика может служить автоматический запуск службы резервного копирования своего сайта. Нам не нужно каждый раз нажимать кнопку, чтобы сделать бекап нашего сайта, — достаточно будет единожды настроить Cron и установить для него расписание.

 

 

Какая польза от Планировщика задач в WordPress?

Кроме автоматического резервного копирования, упомянутого выше, в WordPress есть масса других применений для Cron. Одной из самых ярких является автоматическое обновление. Планировщик задач регулярно проверяет последние обновления программного обеспечения, тем и плагинов. И найдя доступные обновления, предлагает вам нажать кнопку «Обновить».

Кроме того, Cron в WordPress также занимается публикацией запланированных постов, отправкой пингбэков и трекбэков, и другими потенциально полезными вещами.

 

 

Чем Cron в WordPress отличается от обычного Cron?

У WordPress фактически есть своя система для запуска заданий Cron. И она немного отличается от обычного Cron.

Для обычного планировщика задач достаточно указать точную дату и время выполнения каждого задания. И, подобно часовому механизму, ваш скрипт будет выполняться именно в это время. Но Cron в WordPress работает по-другому. Фактически он не работает. Вместо этого он запускается только тогда, когда кто-то посещает ваш сайт. Всякий раз, когда кто-то посещает сайт, Планировщик задач в ВордПресс проверяет, есть ли задачи по расписанию, которые нужно запустить. Если он обнаружит, что запланированное время задачи уже прошло, он все равно продолжит выполнение этой задачи.

А если никто не заходит на сайт? Вот тут и кроется потенциальная проблема. Если никто не посещает сайт в течение определенного периода времени, Планировщик задач спокойно себе отдыхает. Очевидно, что если ваш сайт ежедневно посещают тысячи пользователей, это вряд ли будет проблемой. Но если на ваш сайт заходят лишь несколько посетителей в день, а вам нужно запускать Cron каждые 30 минут, тогда вы столкнулись с проблемой.

Например, вы настроили с помощью плагина автоматическую отправку рассылки на 2 часа ночи. Теоретически, если никто не посетит ваш сайт до 7 утра, тогда письма не будут отправлены (при прочих равных условиях) до 7 часов утра.

 

Однако есть способы обойти эту проблему.

 

 

Как добавить задачи по расписанию в WordPress

Здесь мы кратко рассмотрим процесс добавления основных повторяющихся заданий, а также одноразовых запланированных заданий.

 

 

Как добавить повторяющиеся задачи Cron

Важно помнить, что Планировщик задач в WordPress работает с интервалами, а не в определенное время. Например, если вы планируете запуск задачи в 00 часов ночи с интервалом в два часа, он первый раз запустится в 12 часов ночи. А потом через каждые 2 часа.

Чтобы добавить повторяющиеся задачи, воспользуйтесь примером кода ниже (взято с Codex; можно использовать, например, в своем плагине):

 

register_activation_hook(__FILE__, 'my_activation');
function my_activation() {
  if (! wp_next_scheduled ( 'my_hourly_event' )) {
    wp_schedule_event(time(), 'hourly', 'my_hourly_event');
  }
}
add_action('my_hourly_event', 'do_this_hourly');

function do_this_hourly() {
  // выполнять что-то каждый час
}

 

 

 

Как добавить одноразовую задачу Cron

Чтобы добавить одноразовое задание Cron в WordPress, вы можете использовать следующий пример кода в качестве базы. Опять же, помните, что даже если вы запланируете запуск события в определенное время, Cron запустится только тогда, когда на ваш сайт примерно в одно и то же время зайдет посетитель. Чтобы обойти это ограничение, лучше всего настроить Cron на сервере вашего хостинга и установить запуск файла {DOMEN}/wp-cron.php на определенное время. Также на сервере можно настроить и повторяющийся запуск Планировщика задач.

Чтобы запустить задачу через один час с текущего времени, вы можете в своем плагине использовать эту структуру:

 

function do_this_in_an_hour() {
  // что-то сделать через час
}
add_action( 'my_new_event', 'do_this_in_an_hour' );

// поместите эту строку внутри функции,
// предположительно в ответ на что-то, что пользователь делает
// иначе будет запланировано новое событие при каждом посещении страницы
wp_schedule_single_event( time() + 3600, 'my_new_event' );

// time() + 3600 = один час с текущего времени

 

 

 

 

Краткий итог

Вот и все! Это было довольно быстрое и краткое введение в Планировщик задач, который используется в сайтах на движке WordPress. Честно говоря, если вы не являетесь разработчиком, вам, вероятно, никогда не понадобится знать о задачах Cron в WordPress. Но, всегда лучше быть немного осведомленным о важных вещах своего сайта, не так ли?

 

Recent Posts

Как изменить активную тему WordPress через базу данных

Тема (шаблон) – это своеобразный скелет сайта на WordPress. И, к сожалению, иногда этот «скелет»…

13 часов ago

5 практических советов по разработке форм под мобильные устройства

Контактная форма (или любая другая) на сайте – это очень важный компонент. На нее возложен…

2 дня ago

Лина Костенко

Ужас не в том, что что-нибудь изменится. Ужас в том, что все может остаться тем…

1 неделя ago

Трансформационная игра родом из древней Индии — Лила

Что такое Лила — это древняя игра, выступающая в качестве инструмента для личностной трансформации, практик…

1 неделя ago

Конструктор — лучший вариант интерактивной игрушки для детей

Современные варианты детских конструкторов — это не просто игрушки, а действенный инструмент развития, который помогает…

1 неделя ago

Как сделать так, чтобы ваш сайт показывался в блоке ответов Google

Основной трафик на сайт с поисковых систем идет именно по органической выдаче. И здесь очень…

2 недели ago