Publishing a Post in WordPress using wp_publish_post

The wp_publish_post function is a WordPress function that changes the status of a post to ‘publish’. This function essentially enables the content of a post to be made public on a WordPress site. The function performs several actions to effect this change.

Firstly, the wp_publish_post function updates the status of the post in the WordPress database to ‘publish’. This change in status allows the post to be visible to all visitors of the site, as opposed to a draft or pending status which would limit the visibility of the post.

Additionally, the wp_publish_post function triggers the ‘publish_post’ action. This action can be hooked into by other parts of a WordPress application to perform additional operations when a post is published. For example, a plugin could hook into this action to send a notification email whenever a new post is published.

Finally, the wp_publish_post function also calls the wp_transition_post_status function. This function is responsible for managing the various actions that need to occur when a post’s status is changed. This includes tasks such as updating the count of published posts and clearing cached data related to the post.

Parameters Accepted by the wp_publish_post Function

The wp_publish_post function in WordPress accepts a single parameter as input. This parameter is detailed below:

  • $post(intWP_Post): This is a compulsory parameter that needs to be provided when calling the function. It represents the ID or the object of the post that you want to publish.

Return Value of the wp_publish_post Function

The wp_publish_post function does not return any value upon execution. Once the function is called with the required parameter, it performs its task without providing any return output.


How to Publish a Post in WordPress Programmatically

The wp_publish_post function is commonly used to publish a post in WordPress programmatically. Here is an example of how to use this function:

$post_id = 123; // Replace with your post ID

In the above code, $post_id is the ID of the post that you want to publish. The wp_publish_post function will publish this post.

How to Publish All Draft Posts using wp_publish_post

You can use the wp_publish_post function in a loop to publish all draft posts. Here’s how you can do it:

$args = array(
 'post_status' => 'draft',
 'posts_per_page' => -1,
$draft_posts = get_posts($args);

foreach ($draft_posts as $post) {

In the above code, the get_posts function fetches all the draft posts. Then, the wp_publish_post function is used in a loop to publish each draft post.


The wp_publish_post function in WordPress is an useful component for programmatically publishing posts. It transitions a post from any status to the ‘publish’ status, thus making it visible to the public on the website. This function can be used in a variety of scenarios, such as when creating automated systems for post scheduling or when developing plugins that require control over the publishing process. It’s important to note that this function directly alters the status of the post in the database, bypassing any checks or balances that might be in place in the WordPress admin interface.

Related WordPress Functions