Custom post type posts are left in the database if a post type is no longer registered (in use).
Plugins and themes can (without you knowing) use custom post types as a way to store data. These posts stay in the database forever if they’re not cleaned up by the plugin/theme itself upon deletion.
There are a lot of plugins that clean your database (by removing revisions, drafts etc.), but I haven’t found one that does a cleanup of unused post type posts.
This plugin provides an easy way to detect and remove posts from post types that are no longer in use. The settings page for this plugin is at wp-admin > Tools > Custom Post Type Cleanup.
Note: The proper WordPress delete function wp_delete_post is used instead of running a direct MySQL query to delete the posts. This way all associated post data (comments, post meta etc.) are also deleted from the database.
Since version 1.2.0 you can re-register unused custom post types for a limited period of time. This allows you to inspect and delete the posts like you would normally (in the wp-admin).
Follow these instructions to install the plugin.
- In your WordPress admin panel, go to Plugins > New Plugin, search for “custom post type cleanup” and click “Install now”.
- Alternatively, download the plugin and upload the contents of custom-post-type-cleanup.zip to your plugins directory, which usually is /wp-content/plugins/.
- Activate the plugin
- Go to wp-admin > Tools > Custom Post Type Cleanup and see if there are unused custom post type posts in the database.
Contributors & Developers
“Custom Post Type Cleanup” is open source software. The following people have contributed to this plugin.Contributors
- Add batch size option to admin form.
- Add ability to re-register unused custom post types.