Как отладить WordPress "Cron" wp_schedule_event
Как можно отладить проблемы с WordPress Cron? Я думаю, что он срабатывает, когда пользователи заходят на сайт, но ошибки не будут им показаны, так как задачи выполняются "асинхронно". Как можно отладить такие ошибки?
Я использую wp schedule event

Вы можете запустить WP cron вручную, вызвав: http://example.com/wp-cron.php?doing_wp_cron
Если вы не хотите, чтобы автоматический cron запускался во время отладки, добавьте это в ваш файл /wp-config.php
:
define('DISABLE_WP_CRON', true);
Если вы находитесь в среде разработки и хотите выводить отладочную информацию, ручной вызов cron таким способом покажет вам вывод отладки.
Альтернативно вы можете использовать встроенную в PHP функцию error_log для записи сообщений в лог ошибок при отладке. Вам нужно будет использовать эту функцию вместе с настройками WP_DEBUG, как упомянул Rarst.

Обязателен ли параметр ?doing_wp_cron
? Смотрите руководство по ручной настройке EasyCron.

Вы можете выполнить отладку вручную, создав действие и запустив внутри него Cron-задачу. Вот пример:
add_action( 'init', function() {
if ( ! isset( $_GET['the_cron_test'] ) ) {
return;
}
error_reporting( 1 );
do_action( 'this_is_cron_event_hook' );
die();
} );
После этого перейдите по адресу вашего сайта: http://example.com?the_cron_test
Это покажет вам все ошибки, связанные с Cron-задачей.
Но выполнять это вручную не имеет особого смысла. Вы можете использовать плагин Advanced Cron Manager PRO, который сделает это за вас, а также сохранит логи и другую статистику.

Вы можете использовать плагин Cron-View. С его помощью вы сможете увидеть: а) зарегистрировано ли ваше задание и б) когда оно должно выполниться в следующий раз.
Кроме того, вы можете добавить более короткий интервал для вашего события (например, каждые 2 минуты) и тестировать ваш метод чаще на локальной системе. Используйте хук фильтра 'cron_schedules' для регистрации новых интервалов. Например:
function my_additional_schedules($schedules) {
// интервал в секундах
$schedules['every2min'] = array('interval' => 2*60, 'display' => 'Каждые две минуты');
return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');

Вы можете (и, вероятно, стоит это сделать в любом случае, с cron или без) настроить журнал ошибок PHP для фиксации всех ошибок.
