How to change post status in hook?

I have similar problem as described in How to trap “Publish” button to check for meta box validation?
Answer there is to hook into save_post and change post type. How can I do it?
I try to use wp_transition_post_status but it doesn’t work for me…

function myHook( $post_ID, $post )
{

    wp_transition_post_status('pending', $post->post_status, $post );

}

add_action( 'save_post', 'myHook', 10, 2 );

Edit: I have clear wordpress installation without any plugins, additional code and similar

1 Answer
1

You get the full post object as a second parameter on save_post. Use it to change the status just like the following code.

add_action( 'save_post', 'wpse_78351_status', 10, 2 );

function wpse_78351_status( $post_ID, $post )
{
    remove_filter( current_filter(), __FUNCTION__ );

    if ( 'trash' !== $post->post_status ) //adjust the condition
    {
        $post->post_status="draft"; // use any post status
        wp_update_post( $post );
    }
}

See this answer for a list of post statuses.

Leave a Comment