Stop configuring giant plugins. Build a small one instead.

A 50-line custom plugin almost always beats a 50,000-line plugin configured to do one thing.

Every WordPress problem has a plugin that solves it — usually one with 50,000 weekly active installs, 200 settings, and a feature surface ten times larger than what you actually need. Configuring giant plugins to do one specific thing is the path most teams take. It's almost always the wrong one. Here's when a custom plugin is the better answer, and what it actually costs to maintain.

The default WordPress problem-solving instinct goes like this: identify the need, search the plugin directory, pick the option with the highest install count and decent recent updates, install it, configure it. It works often enough to be the consensus path. It also leaves every site that takes it carrying a heavier maintenance load than it had to, because the chosen plugin does ten times what’s actually needed — and you’re now responsible for staying compatible with all of it.

The cost of plugins doing too much.

Every plugin you install is a long-term commitment. Specifically, you commit to:

  • Every CVE that hits its codebase. A plugin’s vulnerability surface scales with its feature count. The plugin with 200 settings has 200x the chance of containing a vulnerability than the plugin with 5 settings doing one thing.
  • Every update cycle it goes through. Plugins update for reasons that have nothing to do with you: their other 49,999 users want a feature, a new dashboard, a different UI. You inherit those changes whether you wanted them or not.
  • Every dependency it pulls in. The bigger the plugin, the more likely it depends on libraries, polyfills, third-party API integrations, and conventions you don’t control. Each is a future migration.
  • Every assumption it makes about how WordPress works. A giant plugin almost always brings opinions about hooks, taxonomies, capabilities, JS bundling. Those opinions can collide with the choices your custom theme makes.

Some plugins are worth all of that. ACF, Gravity Forms, WooCommerce. Tools that genuinely do a lot and that you actually use a lot of. Most installed plugins are not in that category. They’re a giant tool used for one small job, and the small job could have been a 50-line file.

When to build instead of configure.

Three signals that say custom is the right call:

  • You’re using less than 20% of the plugin’s surface. If you’ve installed a 200-setting plugin and configured 5 of them, the other 195 are pure liability. They’re code that runs, code that updates, code that can break. None of it is doing work for you.
  • The plugin’s defaults conflict with your architecture. If you’re spending hours fighting a plugin to make it stop emitting wrappers, scripts, styles, or markup you don’t want, you’ve already paid the cost of building the small version yourself.
  • The thing you need is shape-of-WordPress, not shape-of-plugin. Custom post types, simple ACF integrations, a hook into save_post, a basic REST endpoint — these are core WordPress mechanics. Wrapping them in someone else’s plugin is asking the plugin to translate between your code and the platform when you could just talk to the platform directly.

What “a small plugin” actually means.

The fear of writing custom code is usually backed by a memory of trying to add “just one feature” to a codebase that ballooned. A small WordPress plugin doesn’t have to balloon. The pattern is:

  • One file, one purpose. A single PHP file with a header comment, a few hooks, and the code those hooks need. No autoloader. No service container. No 12-file directory structure.
  • No admin UI unless you actually need one. If the configuration fits in three constants or filters, use constants and filters. An admin settings page is its own maintenance burden, only build one when the editor genuinely needs to change values without a deploy.
  • No update cycle to manage. Your plugin ships in your wp-content/mu-plugins directory or in source control. There’s no Plugin Directory listing to maintain, no “update available” nag for the editor to dismiss, no risk of an auto-update breaking the site at 2 AM.
  • Documented like real code. A docblock at the top explaining what it does and why, and an inline comment on each non-obvious choice. A future developer reading this in two years should understand the rationale without you in the room.

When the giant plugin is the right call.

To be fair: there are legitimate reasons to use a 50,000-install plugin. WooCommerce, ACF, and Gravity Forms genuinely do a lot of work that’s not worth rebuilding. A plugin that handles edge cases you’d otherwise discover one at a time is worth its weight. The distinction isn’t “custom good, plugin bad.” It’s whether the plugin you’re considering is doing work proportional to the maintenance load it brings. Most aren’t.

The default instinct should be: figure out the actual scope first, then decide whether to wrap an existing tool or write a fresh one. Either is fine. The wrong move is to default to a plugin search because that’s the path of least immediate resistance, and then carry the cost for years. See platform architecture for how this plays out across a full build.

Let's talk about what you're building

No proposals. No pitch decks. Just a conversation about your project and whether I'm the right fit to build it.

Start a Conversation