Wordpress 'псевдо хрон - PullRequest
       19

Wordpress 'псевдо хрон

2 голосов
/ 09 декабря 2011

Это просто не работает, и я понятия не имею, что не так.Может быть, кто-то может мне помочь.Вот мой код:

add_action('kawabunga',function(){
    echo '<h1>KAWABUNGA!!!!1</h1>';
});


if (!wp_next_scheduled('kawabunga')) {
    wp_schedule_single_event(time()+120, 'kawabunga');
}

Затем я использовал этот код, чтобы посмотреть, что происходит с задачей:

echo 'scheduled = ' . wp_next_scheduled('kawabunga');
echo '<br>time = ' . time();

И он действовал так, как я ожидал: сначала отображались как временные метки, так и в2 минуты только второе, потому что действие было выполнено, и оно больше не было запланировано, поэтому оно вернуло «false», а не метку времени.Но моя функция фактически не выполнялась, она не печатала <h1>KAWABUNGA!!!!1</h1>, и моя IDE не остановилась на точке останова.

Я также протестировал действие в другой части сайта: do_action('kawabunga'); иэто работало просто отлично.Это не работает только в cron.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

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

Я считаю, что обработка cron запускается после вывода страницы, чтобы не замедлять работу пользователя. Вывод не будет иметь никакого эффекта. Вам лучше протестировать с помощью вызова mail () или wp_mail () (или написать в файл, если почта не работает в вашей системе).

С этими двумя исправлениями ваш код выглядит хорошо.

0 голосов
/ 11 августа 2014

Попробуйте позвонить wp_cron () после этих строк:

add_action('kawabunga', function(){
    echo '<h1>KAWABUNGA!!!!1</h1>';
});

if (!wp_next_scheduled('kawabunga')) {
    wp_schedule_single_event(time()+120, 'kawabunga');
}

wp_cron();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...