The after_delete_post WordPress action fires after a post is deleted using the wp_delete_post() function.
Usage
add_action('after_delete_post', 'your_custom_function', 10, 2);
function your_custom_function($postid, $post) {
// Your custom code here
}
Parameters
$postid: (int) The ID of the deleted post.$post: (WP_Post) The deleted post object.
More information
See WordPress Developer Resources: after_delete_post
Examples
Log deleted posts
Log the title and ID of deleted posts in a separate log file.
add_action('after_delete_post', 'log_deleted_posts', 10, 2);
function log_deleted_posts($postid, $post) {
// Get the post title
$post_title = $post->post_title;
// Prepare log message
$log_message = "Post ID: {$postid}, Post Title: {$post_title} was deleted.\n";
// Write the message to the log file
file_put_contents('deleted_posts.log', $log_message, FILE_APPEND);
}
Delete associated metadata
Delete custom metadata when a post is deleted.
add_action('after_delete_post', 'delete_custom_metadata', 10, 2);
function delete_custom_metadata($postid, $post) {
// Delete custom metadata
delete_post_meta($postid, 'your_custom_meta_key');
}
Notify admin of deleted posts
Send an email to the admin when a post is deleted.
add_action('after_delete_post', 'notify_admin_on_post_delete', 10, 2);
function notify_admin_on_post_delete($postid, $post) {
// Prepare email subject and message
$subject = "A post has been deleted";
$message = "The post with ID: {$postid} and title: '{$post->post_title}' has been deleted.";
// Send email to the admin
wp_mail(get_bloginfo('admin_email'), $subject, $message);
}
Unschedule future events
Unschedule a future event related to the deleted post using the post ID.
add_action('after_delete_post', 'unschedule_future_event', 10, 2);
function unschedule_future_event($postid, $post) {
// Unschedule the event related to the post
wp_clear_scheduled_hook('your_scheduled_hook', array($postid));
}
Update a custom counter
Decrease a custom counter when a post is deleted.
add_action('after_delete_post', 'update_custom_counter', 10, 2);
function update_custom_counter($postid, $post) {
// Get the current counter value
$counter = get_option('your_custom_counter', 0);
// Decrease the counter value by 1
$counter--;
// Update the counter value in the database
update_option('your_custom_counter', $counter);
}