Using WordPress ‘deleted_term_relationships’ PHP action

The deleted_term_relationships WordPress PHP action fires immediately after an object-term relationship is deleted.

Usage

add_action('deleted_term_relationships', 'your_custom_function', 10, 3);
function your_custom_function($object_id, $tt_ids, $taxonomy) {
    // your custom code here
}

Parameters

  • $object_id (int) – Object ID.
  • $tt_ids (array) – An array of term taxonomy IDs.
  • $taxonomy (string) – Taxonomy slug.

More information

See WordPress Developer Resources: deleted_term_relationships

Examples

Logging Deleted Term Relationships

Log the details of deleted term relationships in a custom log file.

add_action('deleted_term_relationships', 'log_deleted_term_relationships', 10, 3);
function log_deleted_term_relationships($object_id, $tt_ids, $taxonomy) {
    // Create a log entry
    $log_entry = 'Deleted term relationships: Object ID - ' . $object_id . ', Taxonomy - ' . $taxonomy . ', Term Taxonomy IDs - ' . implode(', ', $tt_ids) . PHP_EOL;

    // Append the log entry to the log file
    file_put_contents('deleted_term_relationships.log', $log_entry, FILE_APPEND);
}

Clear Cache After Deleting Term Relationships

Clear a cache after a term relationship is deleted.

add_action('deleted_term_relationships', 'clear_cache_on_term_relationship_delete', 10, 3);
function clear_cache_on_term_relationship_delete($object_id, $tt_ids, $taxonomy) {
    // Clear the cache
    your_custom_cache_clearing_function();
}

Notify Admins About Deleted Term Relationships

Send an email to the site administrators when a term relationship is deleted.

add_action('deleted_term_relationships', 'notify_admins_on_term_relationship_delete', 10, 3);
function notify_admins_on_term_relationship_delete($object_id, $tt_ids, $taxonomy) {
    // Prepare email subject and message
    $subject = 'Term Relationship Deleted';
    $message = 'A term relationship has been deleted with the following details:' . PHP_EOL;
    $message .= 'Object ID: ' . $object_id . PHP_EOL;
    $message .= 'Taxonomy: ' . $taxonomy . PHP_EOL;
    $message .= 'Term Taxonomy IDs: ' . implode(', ', $tt_ids) . PHP_EOL;

    // Send the email to the site administrators
    wp_mail(get_option('admin_email'), $subject, $message);
}

Update Custom Counter on Term Relationship Deletion

Update a custom counter when a term relationship is deleted.

add_action('deleted_term_relationships', 'update_custom_counter', 10, 3);
function update_custom_counter($object_id, $tt_ids, $taxonomy) {
    // Update the custom counter
    $counter = get_option('custom_term_relationship_counter', 0);
    $counter--;
    update_option('custom_term_relationship_counter', $counter);
}

Track Deleted Term Relationships for Custom Reporting

Store the deleted term relationship details in a custom table for reporting purposes.

add_action('deleted_term_relationships', 'track_deleted_term_relationships', 10, 3);
function track_deleted_term_relationships($object_id, $tt_ids, $taxonomy) {
    global $wpdb;

    // Insert the deleted term relationship details into the custom table
    $table_name = $wpdb->prefix . 'deleted_term_relationships';
    $data = array(
        'object_id' => $object_id,
        'taxonomy' => $taxonomy,
        'term_taxonomy_ids' => implode(', ', $tt_ids),
        'deleted_at' => current_time('mysql'),
    );
    $wpdb->insert($table_name, $data);
}