What is Post Status in WordPress?
A post status is the label WordPress assigns to every post to mark its stage in the publishing workflow and determine how WordPress handles it. WordPress ships 8 built-in statuses: Published, Scheduled (future), Draft, Pending review, Private, Trash, Auto-draft, and Inherit, stored in the post_status field of the wp_posts database table.
More About Post Status
A post status tells WordPress what to do with a post: show it to everyone, hold it until a set date, or keep it waiting for an editor's approval. WordPress assigns a status to every post automatically as you write, save, and publish, so you rarely need to set one by hand.
The 8 default post statuses
WordPress uses 8 statuses by default, documented in WordPress.org's Post Status article. Each has a label you see in the admin and an internal name (in parentheses below) that developers use:
- Published (publish): live on the site. Password protection or other access controls can still limit who reads it.
- Scheduled (future): a scheduled post, published automatically at the date and time you set.
- Draft (draft): an unfinished draft, visible only to users with an appropriate role.
- Pending (pending): submitted and waiting for a user who can publish, typically an editor, to approve it.
- Private (private): published, but visible only to logged-in users with permission to view it.
- Trash (trash): deleted, but held in the Trash so you can still restore it.
- Auto-draft (auto-draft): the placeholder WordPress creates when you start a new post, before your first save.
- Inherit (inherit): used by revisions and attachments, which take their status from their parent post.
A status isn't the same as visibility. Publish means the post is live on the site, not that everyone can read it: a published post can still be password protected, and site-level access controls can keep logged-out visitors from seeing it at all.
Auto-draft is also easy to confuse with autosaving, and they're different things. The auto-draft status marks the placeholder WordPress creates for a brand-new post you haven't saved yet. The copies WordPress saves automatically while you're editing an existing post are stored as revisions, and revisions use the inherit status.
Who can publish and who submits for review
User roles decide who can move a post between statuses. Every default role except Subscriber can write posts, but writing and publishing are separate capabilities. A contributor has the edit_posts capability but not publish_posts, so WordPress shows them a Submit for Review button instead of Publish, and their posts sit in the pending status until an editor or administrator publishes them. Authors and above publish and schedule their own work directly. One scope note: plugins can add custom roles with any mix of capabilities, so these rules describe WordPress's 6 pre-defined roles.
How to change a post's status
You usually don't set a status directly. WordPress sets draft when you click Save Draft, pending when you click Submit for Review, publish when you click Publish, and future when you choose a publication date that hasn't arrived yet. A scheduled post then goes live on its own; our guide to scheduling posts in WordPress shows how to set that up.

To change a status by hand, go to Posts → All Posts and pick a new value from the Status dropdown in Quick Edit, or open the post and use the settings panel in the post editor. To unpublish a live post, click Switch to draft.
Where WordPress stores the status
WordPress stores the status in the post_status column of the wp_posts database table, using the internal names above: publish, future, draft, pending, private, trash, auto-draft, or inherit. Every post lives in that same table whatever its stage; the post_status value is what tells them apart, and it's the same value plugins and WP_Query filter by.
Custom post statuses
You can register your own status with the register_post_status() function, available since WordPress 3.0. There's a catch: WordPress doesn't add custom statuses to its admin screens. As of August 2026, WordPress.org's documentation still lists that feature as pending future development (Trac ticket #12706), so in practice custom editorial statuses come from workflow plugins. Most sites do fine with the built-in 8.
Frequently Asked Questions
- Go to Posts → All Posts in the WordPress admin. A row of status links with post counts appears at the top of the list, in the form All (12) | Published (9). Click one to show only posts with that status.
- A pending post was submitted by someone who can't publish, and it's waiting for a user with the publish_posts capability. To approve one, open it from Posts → All Posts and click Publish. Until then, visitors can't see it.
- Both are hidden from the public, but a private post is published: logged-in users with permission to view it can read it on the live site. A draft isn't published at all, so nobody sees it outside the editing screens.
- Yes. Open the post and click Switch to draft to pull it off the live site, or set its visibility to Private so only permitted logged-in users see it. Visitors can't reach the post again until you republish it.
Powerful WordPress Hosting
Reliable, lightning-fast hosting solutions specifically optimized for WordPress. Find the perfect plan for you by clicking below.
WordPress Hosting Plans