The pre_delete_term WordPress PHP action fires when deleting a term, before any modifications are made to posts or terms.
Usage
add_action('pre_delete_term', 'your_function_name', 10, 2);
function your_function_name($term, $taxonomy) {
// your custom code here
return $term;
}
Parameters
$term(int) – Term ID.$taxonomy(string) – Taxonomy name.
More information
See WordPress Developer Resources: pre_delete_term
Examples
Log term deletion
Logs term deletion to a custom log file.
add_action('pre_delete_term', 'log_term_deletion', 10, 2);
function log_term_deletion($term, $taxonomy) {
$log_message = "Term ID {$term} from taxonomy {$taxonomy} is being deleted.";
error_log($log_message, 3, "/path/to/your/custom.log");
return $term;
}
Prevent term deletion
Prevent term deletion for a specific taxonomy.
add_action('pre_delete_term', 'prevent_term_deletion', 10, 2);
function prevent_term_deletion($term, $taxonomy) {
if ($taxonomy == 'restricted_taxonomy') {
wp_die('You are not allowed to delete terms from this taxonomy.');
}
return $term;
}
Notify admin by email
Notify the admin by email when a term is deleted.
add_action('pre_delete_term', 'notify_admin_term_deletion', 10, 2);
function notify_admin_term_deletion($term, $taxonomy) {
$subject = 'Term Deletion';
$message = "Term ID {$term} from taxonomy {$taxonomy} is being deleted.";
$admin_email = get_option('admin_email');
wp_mail($admin_email, $subject, $message);
return $term;
}
Update term count
Update the term count for a custom taxonomy before deletion.
add_action('pre_delete_term', 'update_term_count_before_deletion', 10, 2);
function update_term_count_before_deletion($term, $taxonomy) {
if ($taxonomy == 'custom_taxonomy') {
$term_obj = get_term($term, $taxonomy);
$term_count = $term_obj->count;
update_option('custom_taxonomy_count', $term_count - 1);
}
return $term;
}
Delete associated metadata
Delete all associated metadata with a term before deletion.
add_action('pre_delete_term', 'delete_associated_metadata', 10, 2);
function delete_associated_metadata($term, $taxonomy) {
delete_metadata('term', $term, '', '', true);
return $term;
}