Use a custom post type for any content you publish many times with the same structure, such as articles, portfolios, products or courses, and use Advanced Custom Fields (ACF) to give each one a set of fields to fill in. The template then lays out every entry the same way, so editors publish by completing a form rather than designing a page. After I rebuilt IIID Inscape this way, the client reported editors publishing new features 50 percent quicker.
Why do content teams get stuck waiting for a developer?
Because the content is built as pages. When every article or portfolio is a hand-laid-out page, adding one means copying an old page, editing it carefully and hoping nothing breaks. Editors stop trusting themselves, and every new item becomes a developer ticket.
IIID Inscape, the magazine of the Institute of Indian Interior Designers, was in that position. It was a static publication with no easy way to publish articles, and the member portfolios at the heart of the publication had no structured home on the site.
When should you use a custom post type instead of a page?
| Content | Use | Why |
|---|---|---|
| Home, about, contact | Page | One-off layouts that change rarely |
| News and blog | Post | Built into WordPress with dates and categories |
| Articles, portfolios, case studies | Custom post type | Many entries, same structure, need archives and filters |
| Products in a catalogue | Custom post type or WooCommerce products | Specifications differ by type and must stay consistent |
| Courses, events, team members | Custom post type | Repeated fields such as dates, prices and people |
The rule I use: if you will publish more than a handful and each one has the same kinds of information, it is a post type.
How do ACF and custom post types fit together?
The post type gives you the container, its admin menu and its archive. ACF gives you the fields. The template reads the fields and does the layout. Editors only ever see the form.
On IIID I used CPT UI, a plugin that registers post types from a settings screen, plus ACF for flexible fields, and built the templates in Oxygen Builder from Figma designs. Treating articles and portfolios as structured content gave the editors consistent templates and gave the site listing and archive pages without extra work.
How do you model the content before building?
- 1
Audit what exists
List every type of content on the current site and in the editors' plans. On IIID this started with stakeholder workshops and a content audit.
- 2
Group by structure
Items that share the same fields become one post type. Articles and portfolios were separate types on IIID because they carry different information.
- 3
List the fields
For each type, write down every field and whether it is required. A course on CyberVie's learning portal had duration, modules, instructors, pricing and call-to-action blocks.
- 4
Decide the taxonomies
Categories and tags that drive filters and archive pages.
- 5
Design the templates
One single template and one listing template per type.
- 6
Train the editors
Show them the form, not the builder. I trained IIID's admins so they could publish without me.
Should everything be a post type?
No. Marketing pages change shape often, and forcing them into fields makes them rigid. On CyberVie I split the two deliberately. The service pages for VAPT, SOC as a Service and DFIR were built in Elementor Pro, where layouts vary and marketing needs to adjust them. The courses on the learning portal were modelled with ACF, where every entry has the same structure and consistency matters more than freedom.
Product catalogues work the same way. On Orilite, ACF holds the product details, project showcases and events, and on Nortek LED it drives product templates so each product type shows the specifications that matter for it.
What results did clients report?
50%
IIID: quicker publishing of new features
40%
IIID: faster page loads
40%
Orilite: less time on content updates
15%
Orilite: more engagement on product pages
These are what the clients reported after launch, not lab measurements. IIID also reported a 25 percent increase in engagement on article and portfolio pages.
Plan the archive from day one
IIID held an archive the institute could not recreate, so backups and restore were set up from launch. Structured content is easier to back up, export and move later, but only if someone sets that up.
How do you display ACF fields in a template?
Most builders read ACF fields through their dynamic data settings, so you rarely need code. In a PHP template it is one function per field:
<h1><?php the_title(); ?></h1>
<p class="duration"><?php echo esc_html( get_field( 'duration' ) ); ?></p>
Escape every field on output, as above. Editors type into these fields, so treat the values as untrusted.
Where should you start?
List your repeated content and its fields before anyone opens a design tool. If you are rebuilding from a design, see Figma to WordPress: how I get pixel-perfect builds. I build structured WordPress sites through my WordPress websites on Bricks, Elementor and Oxygen service. Send me the content your team publishes most and I will reply with a plan.



