Запуск запроса wordpress каждую неделю

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

Оглядываясь, я нашел функцию wp_cron , и мне кажется, что я ищу, поскольку я не могу настроить работу cron на сервере. Проблема в том, что я не смог заставить ее работать. Я создал эту функцию try в my functions.php

 add_action( 'cron_hook', 'cron_exec' ); if( !wp_next_scheduled( 'cron_hook' ) ) { wp_schedule_event( time(), 'daily', 'cron_hook' ); } function cron_exec() { echo time(); } 

И я вызываю действие на моей странице с помощью следующего кода:

 do_action('cron_hook'); 

Это моя первая попытка wp_cron, поэтому, возможно, я пропустил что-то, но я ожидал получить то же время () каждый раз, когда обновляю страницу, так как функция должна быть запущена один раз в день, но в итоге у меня была текущая временная метка при каждом обновлении.

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

Спасибо за помощь и приятный день.

Чтобы выполнять cron каждую неделю, вам понадобится что-то вроде этого:

 function custom_time_cron( $schedules ) { $schedules['every_week'] = array( 'interval' => 604800, //604800 seconds in 1 week 'display' => esc_html__( 'Every Week', 'textdomain' ) ); return $schedules; } add_filter( 'cron_schedules', 'custom_time_cron' ); add_action( 'my_cron_hook', 'my_cron_function' ); if (!function_exists('mytheme_my_activation')) { function mytheme_my_activation() { if (!wp_next_scheduled('my_cron_hook')) { wp_schedule_event( time(), 'every_week', 'my_cron_hook' ); } } } add_action('wp', 'mytheme_my_activation'); if (!function_exists('my_cron_function')) { function my_cron_function() { echo time(); } } 

Первая функция создает новый график – потому что у вас есть houly daily , daily и twicedaily в качестве повторной проверки .

Затем вы настраиваете планировщик. Вы проверяете, есть ли запланированное событие с !wp_next_scheduled , и если это не так, вы планируете событие

 wp_schedule_event( time(), 'every_week', 'my_cron_hook' ); 

Если вы уже инициализировали cron с определенным именем, для его переназначения вам понадобится wp_clear_scheduled_hook .

Надеюсь это поможет 🙂