Функция выполняется только один раз в день - PullRequest
0 голосов
/ 21 марта 2019

У меня есть функция abc () в моем functions.php. Я хочу, чтобы эта функция запускалась ТОЛЬКО раз в день.

Как я могу убедиться в этом?

До сих пор я понимал, что когда я буду использовать хук 'init', он будет планировать тысячи ежедневных событий. Так как это правильно сделать?

Привет

1 Ответ

0 голосов
/ 21 марта 2019

То, что вы ищете, называется cron-job.Вы создаете задание cron следующим образом:

add_action('wp_ajax_do_cron', [$this, 'doCron']);
add_action('wp_ajax_nopriv_do_cron', [$this, 'doCron']);

/**
 * Ajax endpoint to be used as a cron url
 */
public function doCron()
{
    $key = filter_input(INPUT_GET, 'key');

    if ($key === 'dhsfvjusdfvu3vrju3vjuvgf') {
        // Execute your function here
    } else {
        header('HTTP/1.0 403 Forbidden');
        echo 'NOPE';
    }    
    wp_die();
}

Выполнение задания Cron можно определить для запуска в конфигурации веб-хостеров или с помощью сторонней службы, такой как эта: https://cron -job.org/en/ По сути, у вас есть функция, которую вы хотите запустить в функции doCron ().Их можно настроить для ежедневного запуска в настройках веб-хостеров.Вы также можете сначала протестировать функцию, перейдя по URL вашего сайта следующим образом: http://example.com/wp-admin/admin-ajax.php?action=do_cron&key=dhsfvjusdfvu3vrju3vjuvgf.Для вашей собственной среды вы должны изменить ключ на что-то случайное.Мой предпочтительный метод для этого - старый добрый метод «лоб против клавиатуры»;)

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