Як працювати з WP-CRON у WordPress
Сьогодні я збираюся розповісти про те, про що пишуть лише в англійському інтернеті, російською мовою інформації особливо немає. Я хочу розповісти про такий чудовий винахід у CMS як псевдо крон. Відразу відповім, що цей крон відмінно підійде для плагінів, тому що не вимагає жодних додаткових налаштувань на сервері, а то значить що ви можете розробляти свої плагіни і ті, хто куплять ваш плагін не будуть робити ніяких зайвих рухів тіла.
Трохи про демона CRON
Для чого використовують CRON – демон cron використовують найчастіше для повторної обробки деяких команд на сайті, я використав для перевірки зовнішнього API, з якого мій плагін витягував дані. Дані мені потрібно було перевірять раз на годину, а якщо знайдено нові дані, то додавати їх до себе на сайт.
Простий приклад роботи CRON на WordPress
Отже, ось невеликий код, який робить перевірку часу і якщо час вийшов, то спрацьовує спеціальний Хук.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
add_filter( 'cron_schedules', 'myprefix_add_weekly_cron_schedule' ); function myprefix_add_weekly_cron_schedule( $schedules ) { $schedules['weekly'] = array( 'interval' => 120, // каждые 2 сикунды 'display' => __( 'Once Weekly' ), ); return $schedules; } if ( ! wp_next_scheduled( 'myprefix_my_cron_action' ) ) { wp_schedule_event( time(), 'weekly', 'myprefix_my_cron_action' ); } add_action( 'myprefix_my_cron_action', 'myprefix_function_to_run' ); function myprefix_function_to_run() { mail('ваш-email@wp-admin.com.ua', 'My Subject', 'test send mail'); } |
Цей код може спрацювати як у файлі functions.php вашої теми, так і в створеному вами плагіні.
Те що перебувати у функції myprefix_function_to_run() повторюватиметься кожні 2 хвилини, чи точніше кожні 120 секунд, у нашому випадку це відправлення тестового листа. Для перевірки не забудьте змінити текст ваш-email@wp-admin.com.ua на той, на якому ви отримуватимете листи кожні 2 хвилини.
Для тих, хто лінивий є варіант простіше і гірше, гірше тому, що при розробці преміум тим чи плагінів вам доведеться додатково робити автоматичне встановлення за допомогою плагіну Активація плагіна TGM.
Ми трохи відступили від теми розмови, щоб не прописувати код для спрацювання автоматичного виконання ваших функцій (код wp-cron, котрий ми розібрали вище). Щоб не розумітися на коді що я показав вище, можу порадити плагін WP Crontrol (Події WP-Cron), для роботи якого вам буде необхідно лише додати функцію та хук у коді плагіна чи файлі functions.php.
1 2 3 4 5 |
add_action( 'myprefix_my_cron_action', 'myprefix_function_to_run' ); function myprefix_function_to_run() { // тут код который надо запускать время от времени mail('maxix@ukr.net', 'My Subject', 'test2'); } |
Після додавання хука та встановлення плагіна, активуємо його, далі переходимо на панелі адміністратора в пункт Інструменти -> КОНТРОЛЬ.
Після переходу ви побачите вікно з усіма працюючими процесами і навіть теми, які ви не створювали, тими, які вже запущені іншими плагінами. Нижче ви зможете додати новий процес.
Для додавання нашого процесу (хука myprefix_my_cron_action), нам потрібно буде заповнити поля, як показано на малюнку нижче.
Розглянемо порядок дій
- Назва гака – вказуємо назву екшену, який був створений раніше myprefix_my_cron_action.
- Наступний запуск - Вказуємо, коли потрібно запустити виконання cron.
- Розклад заходів - Вказуємо, як часто потрібно запускати подію cron.
- Після заповнення форми додаємо подію.
Після додавання, ваша подія з'явиться у списку всіх подій.
Ось, власне, і все, я б радив вам менше користуватися плагінами і більше використати перший спосіб, тому що він правильніший і при розробці плагіна вам не доведеться вчити користувачів тому, що потрібно ще один плагін встановити і без нього неможлива робота того плагіна, який ви продаєте.
Успіхів у розробці плагінів та у використанні CRON, а я старатимусь і далі радуватиму вас новими уроками.
/*
- Базовий курс з веб-дизайну;
- Верстка сайтів;
- Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
- Розробка сайтів на PHP.