wp_cron()
Запускає всі заплановані Крон події, час яких настав.
Перевіряє чи існує хоч одне завдання з часом. Якщо так, то викликає функцію spawn_cron() , яка створює запит на файл крона /example.com/wp-cron.php .
При виклику цієї функції будуть запущені всі дії, які були заплановані і час їхнього запуску вже настав.
Докладніше про крон читайте в описі функції wp_schedule_event() , яка створює нову подію. Там купа прикладів і насправді все те, що потрібно знати про крон в WordPress.
Цю функцію не потрібно викликати окремо. Вона викликається автоматично на події init :
if ( ! defined( 'DOING_CRON' ) ) { add_action('init', 'wp_cron'); }
Якщо десь визначено константу DISABLE_WP_CRON
, то функція нічого не запустить.
Cron — ця назва взята з UNIX-подібних операційних систем, де завдання цього демон-планувальника входить: періодичне виконання завдань у певний час.
Детально про Крон: WP Cron (планувальник) у WordPress
_wp_cron()
Хуків немає.
Повертає
true|false|int|null
.
- Число – при успішному виконанні – кількість відпрацьованих подій (0 означає, що зараз немає подій, які потрібно виконати).
- false – коли не вдалося обробити хоч одну подію.
Використання
<?php wp_cron() ?>
Приклади
#1 Приклад, надсилання повідомлення щогодини на email.
Код можна помістити, наприклад, файл теми functions.php .
// Включаємо крон завдання, якщо вона ще не включена. // Краще це робити один раз при активації плагіна, наприклад if ( ! wp_next_scheduled( 'my_task_hook' ) ) { wp_schedule_event( time(), 'hourly', 'my_task_hook' ); } // додаємо крон хук add_action( 'my_task_hook', 'my_task_function'); function my_task_function() { wp_mail( '[email protected]', 'Автоматичний лист', 'Запланований лист від WordPress.'); }
#2 Додавання крон задачі та свого інтервалу
Код потрібно додавати у файл functions.php або плагін.
add_filter( 'cron_schedules', 'mycron_add_schedule'); add_action( 'init', 'mycron_add_hook'); ## додає крон функцію function mycron_add_hook(){ if ( ! wp_next_scheduled( 'my_cron_worker_start' ) ) { wp_schedule_event( time(), 'my_cron_worker', 'my_cron_worker_start'); } } ## додає крон інтервал часу function mycron_add_schedule( $schedules ){ $schedules['my_cron_worker'] = array( 'interval' => 60, 'display' => 'My Cron Worker' ); return $schedules; }
список змін
З версії 2.1.0 | Введено. |
З версії 5.1.0 | Return value added to indicate success or failure. |
З версії 5.7.0 | Functionality moved to _wp_cron() to which this becomes a wrapper. |
Код wp_cron() wp cron WP 6.0.2
function wp_cron() { if ( did_action( 'wp_loaded' ) ) { return _wp_cron(); } add_action( 'wp_loaded', '_wp_cron', 20); }