Post Status Transitions

WordPress 2.3 introduces some new actions that plugins can use to hook into status transitions and workflow. Before, WP had a ‘private_to_published’ action that announced that a post moved from private to published, and that’s about it. Now WP has actions for every possible transition. These actions are of the form ‘status_to_status’ where status is one of:

  • publish
  • draft
  • private
  • future
  • pending

When a ‘pending’ post is published, the action ‘pending_to_publish’ is triggered. The action is accompanied by the post object that is changing status.

A generic ‘transition_post_status’ action is also emitted for every status change. It is accompanied by the new status, the old status, and the post object. Plugins can use this action to attach a function that intercepts all status changes.

The final action triggered during a status change is of the form ‘status_object’, where status is from the status list above and object is either ‘page’ or ‘post’. For example, when a post is published, a ‘publish_post’ action is triggered. The action is accompanied by the post ID and post object.

See the function wp_transition_post_status() for how these actions are formed. Use add_action() to attach functions to these actions.

10 thoughts on “Post Status Transitions

  1. I’m growing more and more scared of having to upgrade WordPress to 2.3.x now because I have so many dependents on how the database structure is currently setup.

    will legacy code be supported at all for the old database structure?

  2. If you do direct SQL queries that involve the categories, post2cat, or link2cat tables, things will break. If you use API you are safe.

  3. My concern is that additions to the database schema mean more queries, which in turn, will mean worse performance for those on shared mysql hosting environments. A few thousand entries, and database actions are already very sluggish when compared to a fresh blog on the same machine.

  4. I share the same concern with Flexo. My seo site is running on a shared hosting environment and even on WP 2.2, I am almost using the maximum cpu usage (4%).

Leave a Reply