By Greg Nowak. Last updated 2026-07-07.
WordPress custom fields are useful because they separate important business information from page copy. Instead of asking editors to paste a client sector, event date, download URL, campaign owner, or product specification into a long content block, you store that information as named data. The result is easier editing, cleaner templates, more reliable filtering, and less manual rework when the same content needs to appear in several places.
The practical question is not whether WordPress can handle custom fields. It can. The better question is where the structure belongs: a native custom field, a field plugin such as Advanced Custom Fields, a custom post type, a taxonomy, or a fuller content redesign. That decision affects editors, search, integrations, reporting, and the next redesign.
Start with the content model
Custom fields are a good fit when the information is repeatable, predictable, and useful outside the paragraph where it appears. Typical examples include case study metadata, team roles, office locations, opening hours, event dates, pricing notes, hero subtitles, downloadable asset links, and operational flags such as “featured” or “archived.”
If the information will be filtered, sorted, reused in templates, exposed through the REST API, or sent to another system, it should not live only inside free-text content. Treat it as part of the site’s data model.
| Content need | Best fit | Why it works |
|---|---|---|
| One or two simple values managed by a technical editor | Native custom fields | Fast, built into WordPress, no plugin dependency |
| Several fields maintained by non-technical editors | ACF or another field UI | Clear labels, input types, field groups, and fewer data-entry mistakes |
| Recurring content with its own workflow, archive, or template | Custom post type plus fields | Keeps case studies, events, jobs, or resources separate from ordinary pages |
| Values used for grouping, filtering, or navigation | Taxonomy | Better for categories such as sectors, regions, product families, or resource types |
When native custom fields are enough
Native WordPress custom fields still have a place. They are fine for small internal builds, prototypes, and simple key/value data where the people editing the site understand the field names and the consequences of changing them.
In the Block Editor, the Custom Fields panel is hidden by default if it has not been used before. Current WordPress documentation says editors can enable it from the editor’s Options menu, then Preferences, then the General tab, where Custom fields appears in the Advanced section. WordPress requires a page reload after the setting changes, so save work first.
The limitation is the interface. Native fields do not give editors much guidance. There is no friendly field group, no helpful select list, no date picker, and limited validation. For a business site with several editors, this is where a quick shortcut often becomes a long-term operations problem.
When ACF or a custom post type is smarter
Use a field plugin when people need a better editing experience. Advanced Custom Fields lets teams define field groups, field types, location rules, and settings so editors see the right fields in the right place. That matters for agency handovers, marketing teams, and operations leads who need consistent publishing without opening code for every small change.
Use a custom post type when the content has its own lifecycle. Case studies, vacancies, events, locations, resources, and product records usually should not be squeezed into standard pages. WordPress also recommends registering custom post types in a plugin rather than a theme, so the content model survives a redesign.
A safe modern implementation pattern
For developer-built fields, do not rely only on ad hoc values in the database. Register the meta key. Define the type, whether it stores a single value, how it is sanitized, and whether it should be available through the REST API. If you register meta for a custom post type and want it visible through REST, the post type must support custom-fields.
add_action( 'init', 'grn_register_case_study_content' );
function grn_register_case_study_content() {
register_post_type(
'grn_case_study',
array(
'label' => 'Case Studies',
'public' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields' ),
)
);
register_post_meta(
'grn_case_study',
'client_sector',
array(
'type' => 'string',
'description' => 'The client sector shown on case studies.',
'single' => true,
'show_in_rest' => true,
'sanitize_callback' => 'sanitize_text_field',
)
);
}Then output the value in a template or block render callback, escaping it before it reaches the page:
$sector = get_post_meta( get_the_ID(), 'client_sector', true );
if ( '' !== $sector ) {
echo '<p class="case-study-sector">' . esc_html( $sector ) . '</p>';
}For array or object meta exposed through the REST API, define the REST schema properly. For private or sensitive values, do not expose them casually; add appropriate capability checks and keep only public fields available to API consumers.
Common mistakes to avoid
- Adding random meta keys because the real content type was never designed.
- Using free-text fields for values that need filtering or reporting later.
- Putting post type registration in a theme when the content should survive a redesign.
- Exposing meta to the REST API without thinking through who should read or update it.
- Giving editors raw implementation names instead of controlled fields with clear labels.
The practical takeaway
WordPress custom fields are not outdated. They are still one of the most direct ways to make WordPress content reusable and manageable, provided they are treated as part of a content model rather than a drawer for extra notes.
If your site has recurring content, multiple editors, hand-built landing pages, or integrations that depend on reliable data, it is worth mapping the fields before building more templates. Greg can help turn that content model into a WordPress setup your team can actually maintain.
Related on GrN.dk
- AI Crawler Control for Business Websites: Protect Content Without Sacrificing Search Visibility
- Cloudflare Page Rules Debt: The Quiet Way Business Websites Break
- Unable to Post in WordPress? Fix the Invalid JSON Response Without Guesswork
Need help with this kind of work?
Get help structuring your WordPress content model Get in touch with Greg.