WordPress comes with two default content types: posts and pages. For simple sites, this is enough. Blog posts go in posts. Static content goes in pages. But as sites grow more sophisticated, the two default types often stop fitting the content well.
Custom post types solve this. They let you create additional content types that WordPress treats as first-class citizens alongside posts and pages. Products, portfolio items, testimonials, events, team members, case studies, recipes. Each can be its own content type with its own management interface and its own display templates.
This piece covers what custom post types are, when they make sense, and how to create them.
What Custom Post Types Actually Are
The concept extends how WordPress organizes content.
Beyond Posts & Pages
Posts and pages are content types. WordPress calls these post types even though pages are also post types (confusing terminology).
Custom post types are additional content types you create. Each behaves like posts or pages but represents different content.
Own Admin Interface
Custom post types get their own menu item in the WordPress admin. Their own listing page. Their own add/edit interface. They feel like a natural part of WordPress rather than an add-on.
Own URL Structure
Custom post types typically have their own URL patterns. A “portfolio” post type might have URLs like yoursite.com/portfolio/project-name.
Own Templates
Custom post types can have their own template files in the theme. This lets you display them differently from posts and pages.
Own Taxonomies
You can create custom taxonomies (like categories and tags) specifically for custom post types. Portfolio items might have “project type” taxonomy that only applies to portfolio items.
When to Use Custom Post Types
Not every situation needs custom post types.
Distinct Content Types
When you have content that is genuinely different from posts and pages. Products for e-commerce. Portfolio items for creative businesses. Case studies for consultants. Events for organizations.
Different Data Fields
When the content type needs different information than regular posts. Products need prices, SKUs, inventory. Events need dates, locations, ticket links. Books need authors, ISBNs, publication dates.
Different Display Requirements
When the content should be displayed differently. Portfolio items in a grid. Events in a calendar. Products in a shop layout.
Better Content Organization
When mixing everything as posts becomes hard to manage. Separating content types by post type keeps the admin clean.
When Not to Use Them
Simple blog posts do not need custom post types. Static pages do not need custom post types. If content fits comfortably in posts or pages, use those.
Custom post types are overhead. Only add them when they provide real value.
Examples of Common Custom Post Types
Many WordPress sites benefit from specific post types.
Products
WooCommerce and other e-commerce plugins create a “product” post type. Products have their own admin section, their own attributes (price, SKU, inventory), and their own display.
Portfolio Items
Creative businesses often have portfolio custom post types. Each item might have client, project type, completion date, and images.
Testimonials
Testimonials work well as a custom post type. Each has the quote, author name, author role, and possibly a photo. Displayed as needed on various pages.
Team Members
Team member post types include name, role, bio, photo, and possibly social media links. The team page displays them all.
Events
Event post types include date, time, location, ticket link. Can be displayed in calendars or lists.
Case Studies
Case studies benefit from custom post type treatment. Structured content with client info, challenge, solution, results.
Books
Book post types with author, ISBN, publisher, publication year. Useful for author websites and book review sites.
Recipes
Recipe post types with ingredients, instructions, prep time, cook time, servings. Recipe sites use these extensively.
Real Estate Listings
Property post types with price, address, bedrooms, bathrooms, square footage, features.
Job Listings
Job post types with title, department, location, salary range, application link.
How to Create Custom Post Types
Several approaches exist.
Using a Plugin
The easiest approach for non-developers. Plugins provide a visual interface for creating custom post types.
Custom Post Type UI is the most popular option. Free plugin with straightforward interface.
Pods Framework provides custom post types plus custom fields plus more.
Toolset Types is another option with a broader feature set.
These plugins let you create custom post types by filling in forms. No coding required.
Using a Framework
Some frameworks like Advanced Custom Fields (ACF) Pro include custom post type functionality alongside custom fields. Convenient when you already use ACF Pro.
Custom Code in Functions.php
Adding code to your theme’s functions.php or a custom plugin registers post types programmatically. Requires developer knowledge but provides more control.
The register_post_type() function is what handles this. Various parameters control every aspect of how the post type works.
Custom Plugin
For custom post types that should survive theme changes, put the code in a custom plugin rather than functions.php. The post types persist regardless of active theme.
Configuring Custom Post Types
Several settings matter.
Public Visibility
Public post types appear on the front-end of your site. Non-public post types are only visible in the admin.
Most custom post types should be public.
Menu Position
Where the post type appears in the WordPress admin menu. You can position it above other items or in specific locations.
Menu Icon
Choose an icon for the admin menu. WordPress includes a dashicons library, or you can use custom icons.
Labels
The labels used throughout the WordPress admin. Singular and plural forms. Menu name. Add new title. Edit item title. All should be customized to match your content type.
Supports
What features the post type supports. Title, editor, thumbnail, custom fields, comments, revisions, excerpts, page attributes, post formats. Enable only what makes sense for the content type.
Taxonomies
Which taxonomies apply. Custom post types can use standard categories and tags, custom taxonomies, or both.
Has Archive
Whether the post type has an archive page (a page showing all items of that type). Portfolio items usually have archives. Testimonials might not.
Rewrite Rules
The URL structure for the post type. Default follows the post type slug. Can be customized.
REST API Support
Whether the post type is available through the WordPress REST API. Enable this if you or plugins need programmatic access.
Custom Taxonomies
Custom post types often benefit from custom taxonomies.
What Taxonomies Do
Taxonomies organize and classify content. Categories and tags are the default taxonomies. Custom taxonomies work similarly for custom post types.
Examples
Portfolio items might have a “Project Type” taxonomy (Web Design, Print, Video).
Events might have an “Event Category” taxonomy (Workshop, Webinar, Conference).
Recipes might have “Cuisine” (Italian, Mexican, Asian) and “Meal Type” (Breakfast, Lunch, Dinner) taxonomies.
Hierarchical or Flat
Taxonomies can be hierarchical like categories (with parent-child relationships) or flat like tags.
Creation
Same approaches as custom post types. Plugins like Custom Post Type UI create custom taxonomies. Custom code uses register_taxonomy().
Displaying Custom Post Types
Getting custom post types to appear correctly on the front-end takes some work.
Archive Templates
If your custom post type has archives, WordPress looks for specific template files. archive-{post_type}.php for the archive listing. single-{post_type}.php for individual items.
Themes may not include these by default. You might need to create them.
Adding to Menus
Custom post type archive pages can be added to navigation menus. WordPress menu builder supports this once configured.
Displaying in Loops
Custom post types can be queried and displayed anywhere on the site. Custom queries fetch the items. Templates display them.
For non-developers, block-based approaches or query loop features in modern themes can display custom post types visually.
Widgets & Blocks
Some themes and plugins provide widgets or blocks that display custom post types easily. Query Loop block in Gutenberg is one example.
Search Integration
By default, WordPress search may or may not include custom post types depending on settings. Verify search works as expected.
Common Custom Post Type Mistakes
Users stumble in predictable ways.
Creating Too Many
Every custom post type adds complexity. Only create ones that provide real value.
Poor Naming
Post type names should be short, descriptive, and unlikely to conflict with other things. “portfolio” is fine. “my_theme_portfolio_items_v2” is not.
Not Considering Theme Support
Custom post types need theme templates to display well. Themes that do not support them require additional work.
Ignoring URL Structure
Bad URL slugs affect SEO and user experience. Configure the slug thoughtfully.
Registering in the Theme
If you register custom post types in your theme’s functions.php, switching themes breaks them. Use a plugin instead for post types that should persist.
Not Backing Up Before Changes
Modifying post type registration can affect existing content. Backup before major changes.
Forgetting About Migration
If you already have content that would fit a custom post type but was created as regular posts, migrating it takes work.
Wrapping Up the Custom Content Types Picture
Custom post types are one of WordPress’s more powerful features. They let WordPress adapt to almost any content organization. Sites that use custom post types well have cleaner content management than sites that try to shoehorn everything into posts and pages.
For most content beyond blog posts and static pages, custom post types improve organization. Products, portfolios, testimonials, team members, events, and many other content types benefit from having their own post types.
The technical setup is accessible even to non-developers thanks to plugins like Custom Post Type UI. For sites with developers, custom code provides more control.
The display of custom post types on the front-end sometimes requires theme work. Themes designed with custom post types in mind make this easier. Themes without such support may need modifications.
For sites that could benefit from custom post types but do not use them, adding them can improve content organization significantly. The setup is a one-time investment. The benefit continues for the life of the site.
For sites that already use custom post types but not effectively, reviewing the setup can help. Are the right post types configured? Are they displayed well? Are they properly integrated with the rest of the site?
Custom post types are one of the features that separates WordPress from simpler content management systems. Using them well takes advantage of what WordPress can do. Sites that use custom post types thoughtfully have foundations that support any kind of content the business needs. The investment in setting them up pays back through content management that fits the business rather than fighting against generic tools.