Использование планировщика WP-Cron

В WordPress есть встроенный планировщик задач. Основная его задача — проверка на обновления ядра и плагинов. Возможности планировщика открыты и для разработчиков.


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

Большое преимущество этого решения — переносимость.

Логика очень проста:

  • Мы создаем событие. Задаем название и периодичность;
  • Создаем функцию, которая будет запускаться по этому событию;
  • К событию через

    add_action

    мы привязываем нашу функцию;
//  Если задача не определена, ставим ее на выполнение
//  Без этой проверки события будут создаваться при каждом запросе
if( !wp_next_scheduled('scheduled__for_something' ) )
    wp_schedule_event( time(), 'hourly', 'scheduled__for_something' );

//  Привязываем к определенной выше задачи функцию
add_action( 'scheduled__for_something', 'function__for_something', 10, 3 );

function function__for_something( ) {

    /*
     *
     *   Задача для выполнения раз в час
     *
     */
}

Подробности, временные параметры доступны в кодексе, не вижу смысла копировать эту информацию сюда.

Код для

functions.php

.


admin

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

1 месяц ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

1 месяц ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

1 месяц ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

1 месяц ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

1 месяц ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

1 месяц ago