The WordPress reflex is “there’s a plugin for that”. It’s often true, and it’s often the wrong call. Here is how I decide with my clients.
When should you code a custom plugin?
- No plugin does exactly what you want.
- It takes three plugins, each with its own scripts, to cover one need.
- The feature is central to your business and has to grow with it.
- WordPress has to connect to an internal tool or an API.
What does a custom plugin cost?
It depends on the scope. A small, focused feature takes little time; an integration with an external API takes much more. Compare it with the real cost of a plugin: yearly licences, extra weight on the site and time spent working around its limits.
Child theme or custom theme?
A child theme adapts an existing theme without losing the parent theme’s updates, which is handy for tweaks. A custom theme is built from your content: lighter and free of unused features, but it takes real development work.
How do you create a Gutenberg block?
The official tool generates a block’s structure in one command:
npx @wordpress/create-block@latest my-block
You get a block.json file, the editor code and the render. For simple blocks, server-side rendering in PHP avoids validation errors when the markup changes.
ACF or native code?
With ACF Pro, you declare a block with a block.json and a PHP template. It’s quick and very readable for structured content. Native React code gives more control over editing. I use both depending on the need: ACF for content blocks, native code for rich interfaces.
How to decide
| Criterion | Existing plugin | Custom development |
|---|---|---|
| Time to set up | Immediate | Depends on the scope |
| Upfront cost | Low (licence) | Higher |
| Running cost | Yearly licence | Code maintenance |
| Weight on the site | Often high (unused features) | Limited to the need |
| Evolution | Up to the vendor | In your hands |
| Risk | The plugin gets abandoned | Dependence on the developer if the code is poorly documented |
A real example
Take a quote form that has to calculate a price, save the request and send it to a CRM. With plugins, that often means a form builder, a calculation add-on and a connector, each with its own scripts and licence. Custom-built, it’s one lightweight plugin that does exactly that.
How do you keep custom code maintainable?
- Follow WordPress coding standards and APIs.
- Keep the code under version control (Git) and document it.
- Put the logic in a plugin rather than the theme, so it survives a redesign.
- Plan for PHP and WordPress updates.
What now?
What you can do today:
- List the plugins that only handle one small function.
- Spot the ones with a yearly licence.
- Write down the needs no plugin really covers.
Dig deeper: Custom WordPress Development

