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.