delete_post
Fires before a post (of any post type) is deleted from the database.
Important! By the time the hook fires, the comments and post metadata have already been deleted. Use the before_delete_post hook if you need this data when deleting the post.
Usage
add_action( 'delete_post', 'wp_kama_delete_post_action', 10, 2 );
/**
* Function for `delete_post` action-hook.
*
* @param int $post_id Post ID.
* @param WP_Post $post Post object.
*
* @return void
*/
function wp_kama_delete_post_action( $post_id, $post ){
// action...
}
- $postid(integer)
- The ID of the post being deleted.
- $post(WP_Post)
- The WP_Post post object.
Examples
#1 Synchronize (delete) additional post data
Suppose we have a plugin that stores some post data in a separate database table named codex_postmeta. This data must be deleted when the post is deleted.
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;
$sql = $wpdb->prepare( 'DELETE FROM codex_postmeta WHERE post_id = %d', $pid );
$wpdb->query( $sql );
}Changelog
| Since 1.2.0 | Introduced. |
| Since 5.5.0 | Added the $post parameter. |
Where the hook is called
delete_post
wp-includes/post.php 3967
do_action( 'delete_post', $post_id, $post );
wp-includes/post.php 6890
do_action( 'delete_post', $post_id, $post );
Where the hook is used in WordPress
wp-includes/blocks/calendar.php 187
add_action( 'delete_post', 'block_core_calendar_update_has_published_post_on_delete' );
wp-includes/default-filters.php 472
add_action( 'delete_post', '_wp_delete_post_menu_item' );
wp-includes/default-filters.php 475
add_action( 'delete_post', '_wp_delete_customize_changeset_dependent_auto_drafts' );
wp-includes/default-filters.php 583
add_action( 'delete_post', 'delete_get_calendar_cache' );
wp-includes/ms-default-filters.php 79
add_action( 'delete_post', '_update_blog_date_on_post_delete' );
wp-includes/nav-menu.php 1193
remove_action( 'delete_post', '_wp_delete_customize_changeset_dependent_auto_drafts' );
wp-includes/nav-menu.php 1205
add_action( 'delete_post', '_wp_delete_customize_changeset_dependent_auto_drafts' );