Hook on trash post

I want to perform an action when I delete one of my custom post types, which hook should I use:

wp_trash_mycpt

or

trash_mycpt

My action should run solely when mycpt is in the 'publish', 'draft' or 'future' state and moves towards the ‘trash’ state. When it is removed from trash itself there is no reason to run the function again.

3 s
3

The wp_trash_post hook might be what you’re looking for:

Fires before a post is sent to the trash.

Also, there’s the trashed_post hook:

Fires after a post is sent to the trash.

Here’s some untested code to get you started:

function my_wp_trash_post( $post_id ) {

    $post_type = get_post_type( $post_id );
    $post_status = get_post_status( $post_id );
    if ( $post_type == 'mycpt' && in_array(
        $post_status, array( 'publish','draft','future' )
    )) {
        // do your stuff
    }
}
add_action( 'wp_trash_post', 'my_wp_trash_post' );

Leave a Comment