WordPress Version: 6.1
/**
* Publishes future post and make sure post ID has future post status.
*
* Invoked by cron 'publish_future_post' event. This safeguard prevents cron
* from publishing drafts, etc.
*
* @since 2.5.0
*
* @param int|WP_Post $post Post ID or post object.
*/
function check_and_publish_future_post($post)
{
$post = get_post($post);
if (!$post) {
return;
}
if ('future' !== $post->post_status) {
return;
}
$time = strtotime($post->post_date_gmt . ' GMT');
// Uh oh, someone jumped the gun!
if ($time > time()) {
wp_clear_scheduled_hook('publish_future_post', array($post->ID));
// Clear anything else in the system.
wp_schedule_single_event($time, 'publish_future_post', array($post->ID));
return;
}
// wp_publish_post() returns no meaningful value.
wp_publish_post($post->ID);
}