The Post Status in WordPress facilitate the users to determine the workflow state of the posts. Generally, there are 8 default post statuses in WordPress but you can also create your own custom post status. With WordPress, users can be assigned to particular roles for reviewing the content before publishing it and this is the “workflow” feature of the WordPress.

Let’s consider all the 8 default statuses that WordPress provides to its users:

  1. Publish:This status implies that your post is public on your blog and your readers can view it.
  2. Draft:This status implies that your post is incomplete and can be viewed by anyone with a particular user role.
  3. Future: This status implies that the particular post is scheduled to be published in the near future.
  4. Pending: This status implies that the particular post requires approval from another user before publishing it.
  5. Trash:Whenever a user deletes a post then it goes to the trash section but one can always retrieve the posts from here. Note that once you empty the trash, the posts will be deleted permanently
  6. Auto-draft:It refers to all those revisions that automatically get saved while editing the post.
  7. Private:Posts under this status can only be visible at the Administrator level.
  8. Inherit:This status is generally used with child post such as attachments in order to determine the real status from the parent post.

Custom post status:

Apart from all these default post status in WordPress,Here is an example of how to manually add custom post status by using function.php

function custom_post_status(){
	register_post_status( 'unread', array(
		'label'                     => _x( 'Unread', 'post' ),
		'public'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Unread
 <span class="count">(%s)</span>', 'Unread <span class="count">(%s)</span>' ),
	) );
add_action( 'init', 'custom_post_status' );


By creating custom post status, you can add more flexibility to your blog.