do_action( ‘delete_post’, int $postid, WP_Post $post )

Fires immediately before a post is deleted from the database.


Post ID.
Post object.

More Information

Take note, by the time the hook triggers, the post comments and metadata would have already been deleted. Use the before_delete_post hook to catch post deletion before that.


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


5.5.0Added the $post parameter.

User Contributed Notes

  1. Skip to note 2 content

    Let’s suppose you have a plugin that, for one reason or another, stores its own post metadata in a separate database table called codex_postmeta. One of the ways you can achieve synchronization is to be made aware when a post is deleted so that you can replicate the changes yourself.

    add_action( 'admin_init', 'wpdocs_codex_init' );
    function wpdocs_codex_init() {
        add_action( 'delete_post', 'wpdocs_codex_sync', 10 );
    function wpdocs_codex_sync( $pid ) {
        global $wpdb;
        $query = $wpdb->prepare( 'SELECT post_id FROM codex_postmeta WHERE post_id = %d', $pid );
        $var = $wpdb->get_var( $query );
        if ( $var ) {
            $query2 = $wpdb->prepare( 'DELETE FROM codex_postmeta WHERE post_id = %d', $pid );
            $wpdb->query( $query2 );

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