Beginner

WordPress Cleanup: Themes, Plugins, Media, and Users

Picture of Richard Sutherland
Richard Sutherland

Introduction

Over this series you’ve installed WordPress, built pages, tuned performance, set up backups and security, and learned to update and troubleshoot the site. The last piece is the habit that keeps it all manageable.

Sites collect clutter. This could be a plugin you tried once and forgot about, themes that have never been activated, or an account for someone who stopped working on the site a year ago. None of it looks urgent, but every leftover is one more thing to update, back up, and secure.

This tutorial is a cleanup pass you can repeat a few times a year. You’ll remove plugins and themes the site no longer needs, tidy user accounts without losing anyone’s content, and audit media files.

A Ten-Minute Inventory

If it’s been a while since you’ve been through your site, refresh your memory. Open these four screens in WordPress and note everything you don’t recognize:

  1. PluginsInstalled Plugins
  2. AppearanceThemes
  3. UsersAll Users
  4. MediaLibrary

Don’t delete anything yet. A plugin with an unfamiliar name might be handling your contact form, and a strange account might belong to the freelancer who built half your pages.

Before You Delete Anything

Confirm you have a current backup first. A WordPress Toolkit backup from Plesk takes a few minutes and covers both the files and the database. The full process is in our WordPress backup guide.

Install pending updates, too. You want to judge the current version of each component, and sometimes an update fixes the very problem that made you consider removing something.

Removing Plugins You No Longer Need

An inactive plugin still has files on the server, and vulnerable code in those files can sometimes be exploited even with the plugin switched off. Deactivated plugins also keep showing up in your update list and your backups. If the site doesn’t need it, it should go.

First work out what each plugin does. Check whether it handles forms, analytics, SEO metadata, security, caching, backups, redirects, page-builder widgets, or a connection to an outside service. The description and View details link help, and so does opening the plugin’s settings page.

Once you’ve confirmed an inactive plugin is dead weight, deletion takes three clicks. On our demo site that was Akismet, installed but inactive, with a comment setup that didn’t use it.

  1. Go to PluginsInstalled Plugins and click the Inactive filter.
  2. Tick the checkbox for the plugin.
  3. Choose Delete from the bulk actions dropdown and click Apply.

WordPress Installed Plugins screen filtered to inactive plugins, with Akismet selected and Delete chosen in the bulk actions menu

Active plugins need more patience. If you’re confident the plugin is no longer used, deactivate first, then test the public site, wp-admin, your forms, and anything else the plugin might have touched. If everything still works after a few days, delete it. If something breaks, reactivating takes one click.

For plugins tied to sales, bookings, memberships, or your site’s layout, test on a staging copy, not the live site.

Deleting a plugin removes its files but often leaves settings and database tables behind, the residue we covered in our guide to cleaning the WordPress database.

After cleanup, our demo was down to the four plugins doing real work. AccelerateWP and Redis Object Cache for performance, UpdraftPlus for backups, and Wordfence for security.

WordPress Installed Plugins screen after cleanup showing only four active plugins remaining

Themes — Keep the Right Ones, Delete the Rest

Typicallly, it’s best to keep just 2-3 themes installed. First, your active theme. Then you’ll need its parent theme, if your active theme is a child theme, since the child can’t run without it. And keep one current default WordPress theme, such as Twenty Twenty-Five, as a known-good fallback for theme-switching tests.

Everything else can usually go. Open AppearanceThemes, click the unused theme, and find Delete in the bottom of the details window.

WordPress theme details window for the inactive Twenty Twenty-Three theme with the Delete control visible

Deleting a theme removes its files. WordPress usually keeps the related Customizer settings in the database, so reinstalling later often brings the old appearance settings back.

Reviewing User Accounts

Old accounts are a security risk. Every account is a set of credentials someone can phish or brute-force, and an administrator account can install software, change settings, and manage other users. Fewer accounts with lower roles means a smaller target.

Go to UsersAll Users and check the list against three rules.

1 – Every real person should have their own account
2 – Every account should have the lowest role that still covers the work
3 – Every account should have a reason to exist. Accounts for departed staff, finished contractors, and old tests should be removed.

The Administrator filter at the top deserves the closest look, as it has the most potential to cause damage if in the wrong hands.

WordPress Users screen showing an administrator account and a leftover editor account from a former team member

Our demo has a leftover Editor account from a former team member. When you delete a user who has written posts or pages, WordPress asks what to do with their content. Choose Attribute all content to and pick a current user, and everything they wrote stays on the site under the new owner. Delete all content is for when you’re certain it’s all disposable.

WordPress Delete Users confirmation screen with Attribute all content to selected so the departing user's posts are reassigned

Auditing Media Without Breaking Pages

WordPress can’t reliably tell you whether a media file is in use, so this is the slowest part of the job. The Media Library has an Unattached filter, found in MediaLibrary after switching to list view. Unattached means the file isn’t tied to a specific post or page record in the database. It doesn’t mean unused.

WordPress Media Library in list view filtered to Unattached, showing one image that needs manual verification before any deletion

An unattached file can still appear in an Elementor section, a reusable block, theme CSS, a widget, an email template, or be linked directly from another website. Search your site for the filename and check the important pages before deleting anything.

Image-cleanup plugins can miss page builders and custom integrations. When you can’t prove a file is unused, leave it. Storage on shared hosting is rarely so tight that one extra image is worth a broken page.

While you’re at it, clear the easy content clutter. Old drafts, trashed posts, and spam or pending comments can be reviewed and emptied in small batches. Revisions and expired transients are the deeper database side, covered in Part 17.

Check the Site and Set a Rhythm

Finish the same way you’d finish an update. Open the public site in a fresh browser window, click through your main pages, and test anything interactive like a contact form or store checkout. If something stopped working, our troubleshooting steps will isolate it, and your pre-cleanup backup is the safety net behind that.

Then put the next session in the calendar. Monthly suits active sites with regular content changes or several people in wp-admin. Quarterly is plenty for a small site. Backups and updates keep their own, more frequent schedules either way.

Conclusion

That’s the series. You’ve built, secured, backed up, and optimized this site yourself, and the maintenance habits from these last few parts will keep it that way. Ten minutes of housekeeping a month is cheap insurance for everything you’ve put into it. Remember that three months of clutter will take less than ten minutes to clear, but three years’ worth might take you a weekend.

Next steps:

Success!

If you found this tutorial helpful, please consider giving it a like and sharing it with others in the community.

Scroll to Top

Share

Share this link via

Or copy link

https://stw.no/en/tutorials/wordpress/wordpress-cleanup-checklist/Copied!

Share Your Feedback