Итоговый сниппет, который
обновляет произвольные поля текущей записи по событию cron без необходимости жать кнопку "обновить".
Спасибо nokimaro и yarovikov за поддержку!
Это позволяет вносить любые изменения в запись по расписанию.
// регистрируем интервал 24 часа
add_filter( 'cron_schedules', 'cron_24' );
function cron_24( $schedules ) {
$n = rand(0,55);
$schedules['rand_24'] = array(
'interval' => 60 * $n * 24,
'display' => 'раз в сутки'
);
return $schedules;
}
// регистрируем событие 24_event
add_action( 'wp', 'to_cron_24' );
function to_cron_24() {
if ( ! wp_next_scheduled( '24_event' ) ) {
wp_schedule_event( time(), 'rand_24', '24_event');
}
}
// добавляем функцию к хуку события
add_action( '24_event', 'updated_meta' );
function updated_meta() {
// получаем массив записей post
global $post;
$args = array(
'post_type' => 'post'
);
$posts = get_posts( $args );
foreach( $posts as $post ){
setup_postdata($post); // устанавливаем данные
// какая-то задача внутри цикла, например ключевые фразы
$keywords = 'ключевые фразы для серии постов';
$post_id = get_the_ID(); // получаем ID текущего поста в цикле
// обновляем произвольное поле раз в сутки в случайное время
update_post_meta( $post_id, 'allkeywords', $keywords );
}
}