do_action( 'before_delete_post', int $postid, WP_Post $post )

Fires before a post is deleted, at the start of wp_delete_post() .


Top ↑

See also

Top ↑


$postid int
Post ID.
$post WP_Post
Post object.

Top ↑

More Information

This hook runs:

  • Just before other data associated with the post is deleted – like meta data. After the other data is deleted, the delete_post action executes, the primary post is removed, and then the deleted_post action is executed.
  • When items marked for trash are going through final (forced) deletion (e.g. the trash is disabled and an item is deleted).

This hook does not run:

  • For posts that are being marked as trash (unforced). The wp_trash_post hook is the functional equivalent, executed just before items are marked as trash.
  • For attachments. The delete_attachment hook is the functional equivalent, executed just before posts of type attachment are processed. With attachments, exactly as with other post types, meta data is removed, the delete_post action is run, then the attachment is removed from the database, and finally, the deleted_post action is run.

Top ↑


File: wp-includes/post.php. View all references

do_action( 'before_delete_post', $postid, $post );

Top ↑


Version Description
5.5.0 Added the $post parameter.
3.2.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 2 content
    Contributed by Collins Mbaka

    Let’s suppose you have a plugin and when a certain post_type is deleted you want to perform some action.

    add_action( 'before_delete_post', 'wpdocs_my_func' );
    function wpdocs_my_func( $postid ) {
        // We check if the global post type isn't ours and just return
        global $post_type;   
        if ( 'wpdocs_my_custom_post_type' !== $post_type ) {
        // My custom stuff for deleting my custom post type here

You must log in before being able to contribute a note or feedback.