The check_and_publish_future_post() WordPress PHP function is invoked by the cron ‘publish_future_post’ event. Its main role is to publish future posts while ensuring that the post ID indeed corresponds to a future post status. This function is a safeguard against cron accidentally publishing drafts or other types of content that aren’t meant to be published.
Usage
Here’s a typical usage of the check_and_publish_future_post() function:
check_and_publish_future_post( $post_id );
In this example, $post_id is the ID of the post you want to publish.
Parameters
$post(int|WP_Post – Required): This parameter can be either the Post ID or the post object itself.
More information
See WordPress Developer Resources: check_and_publish_future_post()
This function was implemented as a way to avoid inadvertent publishing of drafts by cron. It is currently active and not deprecated.
Examples
Publishing a Scheduled Post
This example publishes a post that was scheduled for future publishing.
// Assume we have a post with ID 45 that was scheduled for publishing $post_id = 45; check_and_publish_future_post($post_id);
Checking Post Status Before Publishing
This code checks if the post is scheduled before publishing.
$post_id = 45;
if ( get_post_status ( $post_id ) == 'future' ) {
check_and_publish_future_post($post_id);
}
Publishing a Post using a WP_Post Object
This code publishes a post using the WP_Post object.
$post_object = get_post(45); check_and_publish_future_post($post_object);
Implementing a Custom Publishing System
This code shows how to implement a custom publishing system where posts get published at specific times.
$posts_to_publish = get_posts( array(
'post_status' => 'future',
'numberposts' => -1
));
foreach ( $posts_to_publish as $post ) {
check_and_publish_future_post($post->ID);
}
Integrating with a Custom Cron Job
This code shows how to use the function with a custom cron job.
add_action('my_custom_cron_job', 'publish_scheduled_posts');
function publish_scheduled_posts() {
$posts_to_publish = get_posts( array(
'post_status' => 'future',
'numberposts' => -1
));
foreach ( $posts_to_publish as $post ) {
check_and_publish_future_post($post->ID);
}
}
In this example, ‘my_custom_cron_job’ is a custom cron job that runs at a specified interval. When it runs, it gets all the posts with ‘future’ status and publishes them using the check_and_publish_future_post() function.