Как автоматически запустить функцию на запланированных интервалах? - PullRequest
3 голосов
/ 21 февраля 2020

Я разрабатываю плагин для веб-сайта Wordpress, в котором я хотел бы создавать отчет в первый день каждого месяца и отправлять его пользователям / admin.

Создание задания Cron на сервере было бы идеальным решением, но есть несколько препятствий для создания Cron Job программно, поскольку процедура отличается от сервера к серверу (я думаю). Поэтому я думаю о функции WordPress, а не о создании Cron Job на сервере, который выполняет эту работу.

Дайте мне знать, если у вас, ребята, есть какие-либо идеи по этому поводу.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2020

Они будут работать только при загрузке WordPress, если время интервала прошло

add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );
function isa_add_every_three_minutes( $schedules ) {
    $schedules['every_three_minutes'] = array(
            'interval'  => 60,
            'display'   => __( 'Every 1 Minutes', 'textdomain' )
    );
    return $schedules;
}

// Schedule an action if it's not already scheduled
if ( ! wp_next_scheduled( 'isa_add_every_three_minutes' ) ) {
    wp_schedule_event( time(), 'every_three_minutes', 'isa_add_every_three_minutes' );
}

// Hook into that action that'll fire every three minutes
add_action( 'isa_add_every_three_minutes', 'every_three_minutes_event_func' );
function every_three_minutes_event_func() {
    $content = "some text here";
    $fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/wordpressrootfolder/".time()."-myText.txt","wb");
    fwrite($fp,$content);
    fclose($fp);
}
2 голосов
/ 21 февраля 2020

Я нашел решение сам. Я надеюсь, что это будет полезно для других.

function do_this_in_an_hour() {

 $postid = "1"; //Supply post-Id here $post->ID.
    wp_update_post(array(
        'ID'    =>  $postid,
        'post_status'   =>  'draft'
        ));     
}
add_action( 'my_new_event','do_this_in_an_hour' );

wp_schedule_single_event( time() + 7200, 'my_new_event' );

// time() + 7200 = two hour from now.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...