Wp_schedule_single_event не срабатывает

У меня есть специальное мероприятие, запланированное для системы управления персоналом в Wordpress. Мне нужно запланировать предупреждения об истечении срока для загруженных документов, но мой хук не срабатывает.

    function do_this_in_a_minunte($args) {
        $to = "[email protected]";
        $subject = 'New expiry email';
        $body = "Hello " . $args;
        $headers = array('From: ' . get_bloginfo ( 'name' ) . ' <' . get_bloginfo ( 'admin_email' ) . '>', 'Content-Type: text/html; charset=UTF-8');
        wp_mail( $to, $subject, $body, $headers );
        print_r($args);
    }
    add_action( 'my_new_event', 'do_this_in_a_minunte', 1, 2 );      
    $args = array(array('email' => 'test', 'title' => 'hello'));
    wp_schedule_single_event( time() + (60 * 1), 'my_new_event', $args);
    wp_schedule_single_event( time() + (60 * 2), 'my_new_event', $args);
    wp_schedule_single_event( time() + (60 * 3), 'my_new_event', $args);

Задания правильно добавляются в планировщик, но электронные письма никогда не отправляются. Сайт отправляет отладочное электронное письмо перед этим блоком, поэтому я знаю, что может отправляет электронные письма.

Wp_schedule_single_event не срабатывает

Я не могу отлаживать сайт локально, что меня раздражает, и журналы не показывают ничего интересного. Любая помощь приветствуется.

Работает на меня. Я также получаю электронные письма.

Bhautik 02.04.2021 12:04

Я проверил ваш код и получаю письма. Можете ли вы установить плагин журнала электронной почты и проверить, отправляет ли ваш сценарий электронное письмо, тогда будет запись.

Gautam Golakiya 02.04.2021 12:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я разобрался, и это было ужасно, но я отвечу на свой вопрос.

Весь код находился внутри действия настраиваемой формы Elementor.

public function run( $record, $ajax_handler ) {
function do_this_in_a_minunte($args) {
        $to = "[email protected]";
        $subject = 'New expiry email';
        $body = "Hello " . $args;
        $headers = array('From: ' . get_bloginfo ( 'name' ) . ' <' . get_bloginfo ( 'admin_email' ) . '>', 'Content-Type: text/html; charset=UTF-8');
        wp_mail( $to, $subject, $body, $headers );
        print_r($args);
    }
    add_action( 'my_new_event', 'do_this_in_a_minunte', 1, 2 );      
    $args = array(array('email' => 'test', 'title' => 'hello'));
    wp_schedule_single_event( time() + (60 * 1), 'my_new_event', $args);
    wp_schedule_single_event( time() + (60 * 2), 'my_new_event', $args);
    wp_schedule_single_event( time() + (60 * 3), 'my_new_event', $args);
}

«Задачи cron» Wordpress не запускаются, если кто-то не заходит на сайт, поэтому я переместил код за пределы метода класса в файл functions.php, поэтому, когда задание запускается, когда кто-то попадает на сайт и очередь обрабатывается, ловушка для отправки электронное письмо действительно существует и может быть запущено.

add_action( 'one_day_before_event', 'some_function', 10, 2 );

function some_function($post_id, $user_id) {
    error_log("some_function firing");
    $to = "[email protected]";
    $subject = 'TEST';
    $body = $post_id . " - " . $user_id;
    $headers = array('From: ' . get_bloginfo ( 'name' ) . ' <' . get_bloginfo ( 'admin_email' ) . '>', 'Content-Type: text/html; charset=UTF-8');

    wp_mail( $to, $subject, $body, $headers );
}

Ответ - убедитесь, что ваш хук существует вне метода класса, который вы настраиваете, иначе он не существует, когда его нужно запустить.

Другие вопросы по теме