Introduction to WordPress Hooks: transition_post_status

transition post status wordpress
16 April 2025

Introduction to WordPress Hooks: transition_post_status


WordPress is a very powerful platform for blogging and content management, and one of its key features is the Hook system that allows developers to easily connect their code to WordPress. One of the important Hooks in WordPress is transition_post_status, which is used to identify changes in the status of posts. For example, when a post changes status from pending to published, this Hook becomes active.


This Hook takes one post and two statuses old_status and new_status as parameters. This feature allows developers to perform specific tasks such as sending emails, updating content, or even executing SEO-related actions.


To use this Hook, you need to connect a function to it. This function will trigger when the status of a post changes, performing the desired action. For example, you might want to send a message to the admin site when a post is published, which can easily be accomplished using transition_post_status.


In summary, this Hook allows you to easily control whenever a post's status changes in WordPress and to perform various related actions based on that.


Sample Code


add_action('transition_post_status', 'my_transition_post_status', 10, 3);

function my_transition_post_status($new_status, $old_status, $post) {
if ('publish' === $new_status && 'draft' === $old_status) {
// Actions you want to perform
wp_mail('[email protected]', 'A new post has been published', 'New post: ' . get_the_title($post->ID));
}
}

Code Explanation


add_action('transition_post_status', 'my_transition_post_status', 10, 3);
This line connects the Hook transition_post_status to the function my_transition_post_status.

function my_transition_post_status($new_status, $old_status, $post) {
This function is defined to manage changes in post status and receives three parameters: the new status, the old status, and the post itself.

if ('publish' === $new_status && 'draft' === $old_status) {
This line checks if the new status is publish and the old status is draft.

wp_mail('[email protected]', 'A new post has been published', 'New post: ' . get_the_title($post->ID));
If the condition is met, an email will be sent to the specified address, containing the title of the new post.

FAQ

?

What is the use of the transition_post_status hook?

?

How can I use transition_post_status to send emails?

?

Can I use transition_post_status for other status types as well?