Автоматически добавлять пользовательские поля (post_meta) ко всем опубликованным сообщениям, ежечасно, через wp_cron?

Я пытаюсь обновить почтовую мета всех опубликованных сообщений ежечасно (через wp_cron) с помощью кода ниже:

if ( ! wp_next_scheduled( 'postviews_updatedcounts_hourly_event' ) ) { wp_schedule_event( time(), 'hourly', 'postviews_updatedcounts_hourly_event' ); } add_action( 'postviews_updatedcounts_hourly_event', 'postviews_updatedcounts_function' ); 

а также…

 function postviews_updatedcounts_function() { global $post; $posts = get_posts('post_status=publish'); foreach( $posts as $post ) { $post_id = $post->ID; $seconds = current_time( 'timestamp' ) - get_the_time('U'); // time ago in seconds that this article was published $minutes = round(abs($seconds/60)); // turn it into minutes $post_key = "postviews_hourly-refresh_" . $minutes . ""; // add post meta with time ago in minutes $total_post_key_views = get_post_meta( $post_id, 'jetpack-post-views', true ); // get current number of views (total) update_post_meta( $post_id, $post_key, $total_post_key_views ); // use new key to store number of views as of hook fire $updated_postviews = get_post_meta( $post_id, $post_key, true ); // retrieve new count $differential = $total_post_key_views - $updated_postviews; // subtract new count from total count to determine difference, daily update_post_meta( $post_id, 'postviews_hourly_differential', $differential ); // add new custom field that only calculates differential } } 

Тем не менее, по какой-то странной причине это не спасет до поста. Я пробовал запускать cron вручную (с плагином Crontrol) – до сих пор не повезло. Как ни странно, функция действительно работает с действием save_post, и она запускается, когда я загружаю функцию непосредственно в single.php (не делая этого по соображениям производительности).

Кто-нибудь знает, почему? Это что-то с wp_cron – что-то, что мне не хватает? Примечание. Другие команды wp_cron выполняются просто отлично. Это что-то с этим, в частности, вызывает проблемы.