# Prevent Deleting Categories That Still Have Posts

> Stops anyone from deleting a category or tag while posts still use it, which avoids accidentally emptying sections of the site or breaking menus and links.

- Type: PHP
- Runs: Run everywhere
- Category: [Admin](https://wpide.com/library/category/admin/)
- Tags: categories, taxonomies, safety
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/admin-protect-categories-with-posts/

## Code

```php
// Taxonomies to protect.
$wpide_protected_taxonomies = array( 'category', 'post_tag' );

add_filter( 'map_meta_cap', function ( $caps, $cap, $user_id, $args ) use ( $wpide_protected_taxonomies ) {
    if ( 'delete_term' !== $cap || empty( $args[0] ) ) {
        return $caps;
    }

    $term = get_term( (int) $args[0] );
    if ( $term && ! is_wp_error( $term ) && in_array( $term->taxonomy, $wpide_protected_taxonomies, true ) && $term->count > 0 ) {
        $caps[] = 'do_not_allow';
    }

    return $caps;
}, 10, 4 );
```

## Notes

Move or remove the posts first, then the term can be deleted; the default category is already protected by WordPress.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Prevent Deleting Categories That Still Have Posts" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
