WordPress Publish Post Hook
One of the best parts of WordPress is its hook/action system; this special hook system is WordPress' way of assigning callbacks when certain events occur. One event that there seems to be a lot of confusion over is which hook to use to detect when a post is initially published. There's the publish_post
hook but that fires when you click the "Update" button after a post has already been published; that's not ideal.
Scour the WordPress documentation and forums and you're sure to see a dozen other solutions but none work as well as the transition_post_status
hook:
// Add the hook action add_action('transition_post_status', 'send_new_post', 10, 3); // Listen for publishing of a new post function send_new_post($new_status, $old_status, $post) { if('publish' === $new_status && 'publish' !== $old_status && $post->post_type === 'post') { // Do something! } }
The transition_post_status
occurs when a post goes from one status to another; you can check out the post status list to see other possible values. I've also added a post_type
check to ensure the post is a blog post and not a page.
Whew, took me a while to find what I needed here -- hopefully this saves you a lot of searching and pain!
Alternatives are
{$old_status}_to_{$new_status}
, which takes one argument of the post in question and is a bit more precise and{$new_status}_{post_type}
Well if a post is already published and we want to edit in such a way that its automatically go in the recent one !! then what is the best procedure for it ?
Hi !
THanks for the tips very useful !
unfortunatly, I can’t get this work,
it seems that the hook is only called when created a new post,
even with simple
Do you confirm it works for you ?
Ok, I get assistance from WordPress forum :P
Topic: transition_to_post seems to work only on ADD NEW post « WordPress.org Forums
Thanks again for your article !