/ Wordpress / CRON

CRON

HIT

22.11.2019

1114

Изучаем инструмент планирования задач CRON.

CronTab — это отдельная утилита на хостинге, с помощью которой в заданное время и интервал мы запускаем определенный файл PHP.

В WordPress есть встроенная функция, которая работает на основе серверного cron — wp_cron.

Смотреть все задания wp_cron

<?php echo '<pre>';
print_r (get_option('cron'));
echo '</pre>'; ?>

Для мониторинга всех текущих cron задач есть отличное решение — плагин WP-Crontrol (100 000). Из него можно видеть список задач, когда сработает в следующий раз сработает каждое из заданий, интервалы. Можно вручную запустить любую задачу или удалить.

Данный плагин помог решить проблему с одним из cron заданий wp, т.к. в нем можно для каждого хука посмотреть и назначить необходимый интервал, чтобы не искать по всем функциям где он может назначаться.

Выключение wp_cron

wp_cron — служебная функция WordPress к которой цепляются все плагины для запуска Crona. Некоторые разработчики считают что автоматический wp_cron тормозит систему, да и работает только тогда когда на сайт заходит посетитель. Советуют отключать его и обращаться к нему с необходимой частотой через Cron на сервере (хостинге).

Отключаем автоматический wp_cron, прописав эту строку в wp_config

define('DISABLE_WP_CRON', true);

А в Cron прописываем следующую команду:

wget https://site.ru/wp-cron.php?doing_wp_cron=1 > /dev/null 2>&1

Запуск функции 1 раз в час

Данная функция очищает все временные файлы в таблице wp_option

// добавляем запланированный хук
add_action( 'wp', '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() {
    global $wpdb;
    $sql = 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_%"';
    $wpdb->query($sql);
}

Отправка письма в произвольный период времени

// регистрируем 5 минутный интервал
add_filter( 'cron_schedules', 'cron_add_five_min' );
function cron_add_five_min( $schedules ) {
	$schedules['five_min'] = array(
		'interval' => 60 * 5,
		'display' => 'Раз в 5 минут'
	);
	return $schedules;
}

// регистрируем событие
add_action( 'wp', 'my_activation' );
function my_activation() {
	if ( ! wp_next_scheduled( 'my_five_min_event' ) ) {
		wp_schedule_event( time(), 'five_min', 'my_five_min_event');
	}
}
// добавляем функцию к указанному хуку
add_action( 'my_five_min_event', 'do_every_five_min' );
function do_every_five_min() {
	$headers = 'From: Александр <info@opttour.ru>' . "\r\n"; // в виде строки
	wp_mail('mail@mail.ru', 'Какая-то тема', 'Какое-то сообщение', $headers);
}

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

CRON
Отработка брошенных корзин
Рекомендации для васОтработка брошенных корзинOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.