WordPress post types vs. custom post types is really a comparison between the content structures WordPress provides by default and the additional structures developers can register when a website needs something more specific.
Posts and Pages are both post types. So are attachments, revisions and several internal WordPress objects. A custom post type uses the same underlying WordPress content system but gives a particular group of content its own name, administration interface, capabilities, taxonomies, templates, URLs and behavior.
A portfolio project does not have to be stored as a Blog Post. A property listing does not have to pretend to be a Page. Courses, documentation entries, events, team members and case studies can each become their own post type when separating them improves the website’s architecture.
That does not mean every new content category deserves a custom post type. Sometimes a category, taxonomy, custom field or ordinary Page is simpler and more appropriate.
This guide explains what WordPress post types actually are, how built-in and custom post types differ, when a custom post type is useful, when it adds unnecessary complexity and what happens to taxonomies, URLs, templates, REST API output, permissions, archives and SEO when you introduce one.
What is a post type in WordPress?
Despite the name, a WordPress post type is not simply a type of blog post.
It is one of the fundamental ways WordPress distinguishes different kinds of content objects.
A standard WordPress installation already uses several post types internally, including:
- Posts;
- Pages;
- Attachments;
- Revisions;
- navigation-related objects;
- block-related content types.
The official WordPress Post Types documentation describes post types as the different types of content WordPress stores in its posts database structure.
The important idea is that WordPress can use the same underlying content system for objects that behave differently in the administration interface and on the frontend.
Posts and Pages are already different post types
The distinction is easy to see with the two most familiar content types.
A WordPress Post normally supports concepts such as:
- publication date;
- author;
- categories;
- tags;
- chronological archives;
- feeds;
- blog-style navigation.
A Page normally behaves differently.
It commonly supports:
- hierarchical parent relationships;
- page templates;
- static site structure;
- no Categories or Tags by default;
- no assumption that it belongs in a chronological blog archive.
Both are stored within the broader WordPress posts system, but WordPress treats them differently because their post type registrations describe different behavior.
What is a custom post type?
A custom post type is an additional post type registered by a theme, plugin or custom code.
For example, a real estate website could register:
property
A training platform might register:
course
A company website could register:
case_study
A documentation system might register:
documentation
The official Registering Custom Post Types documentation explains the standard WordPress registration process.
Custom does not mean stored somewhere completely different
A common misunderstanding is that a custom post type creates an entirely separate database system.
Usually it does not.
For example:
Post ID: 120
post_type: post
Post ID: 121
post_type: page
Post ID: 122
post_type: property
can all be records within WordPress’s post storage model.
The post_type value tells WordPress what kind of object each record represents.
Additional information can then live in:
- post metadata;
- taxonomy relationships;
- featured-image metadata;
- custom fields;
- plugin-specific storage where required.
Why create a custom post type?
A custom post type is useful when a group of content has a clearly different purpose from the site’s existing Posts and Pages.
For example, imagine a web agency website containing:
Blog articles
Projects
Team members
Services
You could technically store everything as Pages.
But a dedicated project post type may provide:
- a Projects menu in wp-admin;
- a dedicated project archive;
- project-specific custom fields;
- project categories;
- a dedicated frontend template;
- project-specific capabilities;
- a consistent URL namespace.
At that point, separating Projects from Pages is not merely cosmetic. It reflects a real difference in the content model.
When should you use a custom post type?
A useful test is whether the content needs several characteristics that distinguish it from the existing post types.
Consider a custom post type when the content needs:
- its own administration menu;
- a dedicated archive;
- different templates;
- different custom fields;
- different taxonomies;
- different capabilities;
- a separate URL namespace;
- a distinct editorial workflow;
- special REST API behavior;
- different search or query logic.
If several of those apply, a custom post type often provides a cleaner architecture.
For the SEO side of that architecture, see WordPress custom post types and SEO.
When should you not create a custom post type?
Do not create a custom post type merely because two groups of Posts should look different.
Suppose a blog contains:
News
Tutorials
Opinion
If these all share:
- the same publishing workflow;
- the same template;
- the same authors;
- the same general metadata;
- the same archive behavior;
then Categories may already provide enough separation.
Creating:
news
tutorial
opinion
as three independent post types may fragment a structure that was perfectly manageable as one.
A taxonomy is not a post type
This is one of the most important architectural distinctions.
A post type describes what the content is.
A taxonomy describes how content is classified.
For example:
Post type:
course
Taxonomy:
course_topic
Terms:
PHP
JavaScript
WordPress
The Course is the content object.
PHP, JavaScript and WordPress classify that content.
If your problem can be solved by classifying existing content rather than creating an entirely new content object, a taxonomy may be the simpler solution.
Categories are usually better than creating several nearly identical post types
Suppose you publish articles about:
- SEO;
- WordPress;
- JavaScript;
- business.
Creating four post types would give you:
seo_article
wordpress_article
javascript_article
business_article
That is usually unnecessary if all four groups behave like articles.
A single Post type with Categories creates a simpler model:
post
Categories:
SEO
WordPress
JavaScript
Business
Custom post types can have their own taxonomies
One of the major benefits of a dedicated post type is being able to create classification systems appropriate to that content.
For example:
Post type:
property
Taxonomies:
property_type
property_location
property_feature
or:
Post type:
course
Taxonomies:
course_topic
difficulty
instructor
WordPress can also share one taxonomy between several post types when that better reflects the site’s architecture.
For a detailed explanation of what happens when content moves between types with different taxonomy support, see What happens to taxonomies when you change post type.
Custom fields are not custom post types either
A custom field adds information to an existing content object.
For example:
Post type:
property
Fields:
price
bedrooms
bathrooms
surface_area
Those fields describe one Property.
They do not need to become separate post types simply because they contain structured data.
A useful rule is:
Distinct content object
→ consider a post type
Property of that object
→ consider metadata/custom fields
Classification of that object
→ consider a taxonomy
Example: building a property website correctly
A sensible architecture might be:
Post type:
property
Custom fields:
price
bedrooms
bathrooms
energy_rating
Taxonomies:
property_type
location
features
Creating separate post types for:
apartment
villa
office
warehouse
would usually be less flexible because those are better understood as types of Property rather than fundamentally different kinds of content.
Example: Projects probably deserve their own post type
An agency site might have Posts for editorial content and Projects for portfolio work.
The two groups may differ significantly.
Posts might contain:
- author;
- publication date;
- article categories;
- reading time.
Projects might contain:
- client;
- industry;
- launch date;
- services delivered;
- project gallery;
- case study metrics.
That is a strong argument for a dedicated project post type.
Custom post types can get their own wp-admin menu
A publicly manageable custom post type can appear directly in the WordPress administration menu.
For example:
Projects
├── All Projects
├── Add New
└── Project Categories
This makes content management easier because editors do not need to distinguish Projects from ordinary Posts using a category or naming convention.
Custom post types use WordPress admin list tables
When an administrative interface is enabled, WordPress normally gives the custom post type its own familiar list screen.
That means editors can use:
- rows;
- columns;
- bulk actions;
- search;
- filters;
- pagination;
- Quick Edit where supported.
The broader interface system is explained in WordPress admin list tables, explained.
You can customize the admin interface per post type
A custom post type can expose administrative information specific to its workflow.
For a Project list, useful columns might include:
Project
Client
Industry
Launch Date
Status
For Properties:
Property
Location
Price
Bedrooms
Availability
TheOneWP Custom Content Columns can help customize which information is visible in supported WordPress content list screens.
A custom post type can support only the editor features it needs
When registering a post type, developers can control which WordPress editing features are supported.
These may include:
title
editor
author
thumbnail
excerpt
comments
revisions
custom-fields
page-attributes
The official add_post_type_support() documentation describes how post-type features can be enabled.
A simple internal object may only need:
title
custom-fields
while an editorial content type may require:
title
editor
author
thumbnail
excerpt
revisions
Custom post types can use the Block Editor
A custom post type is not limited to the Classic Editor.
If the type is configured appropriately, it can use the WordPress Block Editor and expose its content through the modern editing interface.
The registration settings, REST support and post-type capabilities all contribute to how that experience behaves.
If you need to understand the styling side of this editor environment, see WordPress Block Editor CSS, Explained.
TheOneWP can disable Gutenberg by post type
Not every custom content structure benefits from a full Block Editor interface.
A highly structured post type containing mostly custom fields may be easier to manage with a simpler editing screen.
TheOneWP Disable Gutenberg can disable the Block Editor globally or only for selected post types.
This is a good example of why post types matter operationally: two content types on the same site can legitimately use different editing experiences.
Custom post types can have their own templates
WordPress’s template hierarchy allows themes to use templates specific to a custom post type.
For a post type called:
project
a classic theme may use a single template such as:
single-project.php
and an archive template such as:
archive-project.php
The official WordPress Template Hierarchy documentation explains how WordPress selects templates for different requests.
Dedicated templates are one of the strongest reasons for separate post types
Imagine every Project requires:
- project hero;
- client logo;
- project statistics;
- before-and-after gallery;
- related projects.
That structure is substantially different from a Blog Post.
A custom post type allows the theme to treat Projects as first-class content rather than adding increasingly complicated conditionals to one universal template.
Custom post types can have archives
A public custom post type can optionally expose an archive.
For example:
Individual project:
https://example.com/projects/acme-redesign/
Project archive:
https://example.com/projects/
The archive can become an important landing page that lists and organizes all entries belonging to the type.
Not every custom post type needs an archive
An internal data structure may not need any public archive.
Examples could include:
- internal reusable records;
- form configuration objects;
- system content;
- private workflow objects.
Even a public post type does not necessarily need an indexable archive if the archive provides little standalone value.
WordPress custom post types and SEO goes deeper into deciding whether custom post type and taxonomy archives should be indexable.
Public and publicly queryable are different settings
Custom post type registration contains several related settings that control visibility and querying.
These include concepts such as:
public;publicly_queryable;show_ui;show_in_menu;exclude_from_search;show_in_rest.
The official register_post_type() reference documents the available registration arguments.
This means a post type can exist for administrative or internal purposes without necessarily becoming public website content.
Not every custom post type belongs in search results
Plugins frequently use custom post types internally.
A plugin might store:
- templates;
- forms;
- reusable layouts;
- automation records;
- email definitions;
- internal configuration objects.
These may technically be post types while having absolutely no reason to appear in Google.
The term “custom post type” therefore tells you very little about whether the content should be publicly indexed.
Custom post types and WordPress search
A custom post type can participate in frontend queries and search depending on its registration.
For example, a site search could include:
Posts
Pages
Documentation
but intentionally exclude:
Internal Templates
This is another architecture decision that should be made deliberately rather than left to whatever defaults happen to emerge.
WP_Query can query custom post types directly
Developers can request a particular post type through WP_Query.
For example:
$projects = new WP_Query(
[
'post_type' => 'project',
'posts_per_page' => 12,
]
);
The official WP_Query documentation covers the query arguments available to WordPress developers.
This lets templates and applications retrieve each type independently.
Queries are another reason not to over-fragment content
Separate post types can make queries clearer:
Get projects
instead of:
Get posts
where category = projects
and meta field X exists
and another condition identifies project posts
But excessive post types can create the opposite problem.
If editorial content is split across ten nearly identical types, every query that needs “all articles” becomes more complicated.
Custom post types can use custom ordering
Some custom types naturally require a deliberate display order rather than chronological publication order.
Examples include:
- services;
- team members;
- portfolio projects;
- documentation chapters;
- testimonials.
TheOneWP Custom Sort Order can apply a manually managed sequence to selected post types and optionally use that order in frontend queries.
Custom post types can have separate capabilities
A custom post type can also use a specialized permission model.
Imagine a website where:
Editors
→ manage blog posts
Project Managers
→ manage projects
Administrators
→ manage everything
A custom post type can use dedicated capabilities instead of automatically treating every content object like a normal Post.
The WordPress Roles and Capabilities documentation explains the broader permission model.
For a practical explanation, see WordPress user roles and capabilities, explained.
Do not create a custom role simply because you created a custom post type
The two decisions are related but independent.
A new post type does not automatically require a new user role.
Existing roles may already provide the correct editorial structure.
If more granular permissions are needed, evaluate the capability model first.
Custom post types and the REST API
A custom post type can be exposed through the WordPress REST API when its registration enables REST support.
Conceptually, this can provide endpoints such as:
/wp-json/wp/v2/project
or another registered REST base.
This becomes particularly important for:
- headless WordPress;
- JavaScript applications;
- mobile applications;
- external integrations;
- the Block Editor.
The official WordPress REST API documentation for custom content types explains how post types can be made available through REST endpoints.
REST visibility should be deliberate
Making a post type public on the website and exposing it through an API are related but separate concerns.
If your architecture uses custom content types in REST-based applications, see WordPress REST API security basics.
This is one of the guides already present in the TheOneWP guide inventory even if its editorial content is still waiting its turn. The internet will survive the suspense.
Custom post types created by plugins can disappear from the admin when the plugin is disabled
This is an important maintenance detail.
Suppose a plugin registers:
portfolio
and stores 200 Portfolio entries.
If that plugin is deactivated, the database rows may remain.
However, WordPress may no longer have the registration code required to understand how the portfolio type should appear or behave.
The content can seem to disappear from wp-admin even though the data itself still exists.
Audit plugins before removing custom post type providers
Before removing an unfamiliar plugin, check whether it registers:
- custom post types;
- custom taxonomies;
- custom fields;
- templates;
- REST routes;
- shortcodes;
- editor blocks.
This is covered in Auditing WordPress plugins on a client site.
A plugin with an unimpressive name from 2019 may, naturally, be the only thing keeping 8,000 records visible. Deleting first and investigating later is how exciting afternoons are created.
Register important custom post types in a plugin rather than the theme
WordPress developer guidance generally recommends registering site-critical custom post types in a plugin rather than tying them directly to a theme.
The reasoning is simple.
If a Project remains meaningful after the visual theme changes, the Project content structure belongs to site functionality rather than presentation.
A theme can still provide:
- single templates;
- archive templates;
- styling;
- layout.
But the registration itself can remain available when the theme changes.
Changing themes should not make important content disappear
If a custom post type is registered only inside:
functions.php
of the active theme, switching themes may remove its registration.
The database content may survive, but the administration screens and URLs may stop behaving as expected.
For business-critical content structures, a small custom plugin or site functionality plugin usually creates a more durable architecture.
Custom post type URLs need planning
A custom post type can receive its own rewrite structure.
For example:
Post type:
project
URL:
/projects/example-project/
or:
Post type:
course
URL:
/courses/wordpress-development/
Choose this structure before publishing hundreds or thousands of entries.
Changing it later becomes a URL migration.
Changing a rewrite slug affects every published URL in the type
Suppose:
/portfolio/acme/
changes to:
/projects/acme/
If 500 entries use the same structure, you have potentially changed 500 public URLs.
The old addresses may already exist in:
- search engines;
- external backlinks;
- bookmarks;
- internal links;
- social media;
- email campaigns.
For the proper migration process, see How to migrate WordPress URLs safely.
Permanent post type URL changes normally need redirects
If:
/blog/example/
→
/guides/example/
is a permanent move, the previous URL should normally redirect to the new location.
301 vs. 302 vs. 410: which redirect to use explains the status-code decision in detail.
TheOneWP Redirect Manager can manage those URL rules from WordPress.
Existing content can be converted to another post type
A website may begin with everything stored as Posts and later outgrow that architecture.
For example:
Blog Post
→ Guide
or:
Page
→ Project
may become desirable after a dedicated custom post type is introduced.
But conversion involves more than changing one database value.
Post type conversions can affect several properties
A conversion may need to review:
- taxonomies;
- parent relationships;
- page templates;
- post formats;
- sticky status;
- supported editor features;
- permalink structure;
- SEO configuration.
TheOneWP Post Type Converter analyzes these compatibility differences before performing a conversion.
Taxonomies are particularly important during conversion
A Post may have:
Categories
Tags
while the destination custom post type may use:
Guide Topics
or no taxonomies at all.
You need to decide what happens to those relationships rather than assuming WordPress will translate them intelligently because their labels look vaguely related.
See What happens to taxonomies when you change post type for the full migration model.
Post Type Converter can preserve, match, map or drop terms
Post Type Converter supports different strategies depending on the relationship between source and destination taxonomies.
Conceptually:
Keep
→ taxonomy is shared
Match
→ corresponding terms can be matched by name
Map
→ source and destination terms need explicit mapping
Drop
→ source classification no longer applies
This is a much safer model than assuming every old relationship belongs on every new content type.
Custom post types and revisions
Custom post types can support WordPress revisions when revision support is enabled.
This is useful for content such as:
- documentation;
- case studies;
- courses;
- long-form resources;
- client-managed content.
For the broader system, see How WordPress post revisions work.
A structured post type does not automatically eliminate the usefulness of content history.
Custom post types and XML sitemaps
If the custom post type contains public, indexable content, decide whether its URLs belong in the XML sitemap.
For example:
/projects/acme/
/projects/example/
/projects/another-project/
may belong in search if Projects are intended as public case studies.
An internal post type storing reusable template fragments probably should not.
TheOneWP XML Sitemap allows supported post types and taxonomies to participate in sitemap output according to the site’s configuration.
Public does not automatically mean indexable
A custom post type can exist publicly because visitors need to access its pages while still being unsuitable for search indexing.
Examples could include:
- utility pages;
- member resources;
- temporary data pages;
- thin dynamically generated entries.
SEO decisions should follow the value of the resulting URLs rather than the fact that WordPress technically allows them to be opened.
Custom post types need proper SEO metadata when they are indexable
If a custom post type is part of organic search, individual entries may need:
- SEO titles;
- meta descriptions;
- canonical URLs;
- robots directives;
- Open Graph information;
- structured data where appropriate.
TheOneWP SEO Meta can provide metadata controls on selected WordPress post types.
Custom post types are not inherently better for SEO
Search engines do not award ranking points because WordPress internally calls something:
project
instead of:
post
The resulting HTML, content quality, links, URLs, indexability and site architecture are what matter.
A well-designed custom type can improve organization.
A badly designed one can create:
- thin archives;
- orphan pages;
- duplicate structures;
- unnecessary taxonomy archives;
- unstable URLs;
- more maintenance.
A separate post type can improve information architecture
Consider:
/blog/how-to-build-a-shop/
/projects/ecommerce-redesign/
/team/jane-smith/
/services/web-development/
These URLs describe clearly different parts of the site.
The internal content structure mirrors the visible information architecture.
This can make templates, navigation, related content and editorial management easier to reason about.
Too many custom post types can make WordPress harder to manage
A dashboard containing:
Posts
Pages
Projects
Services
Testimonials
FAQs
Team
Partners
Clients
Features
Benefits
Icons
Sections
Banners
Cards
may represent careful architecture.
Or it may represent a page builder that has achieved consciousness.
Before creating another type, ask whether the content is genuinely an independent reusable object or simply one component of another page.
Reusable content does not automatically require a custom post type
Modern WordPress offers several ways to reuse content and layouts.
Depending on the requirement, a custom post type may be less appropriate than:
- patterns;
- synced patterns;
- blocks;
- custom fields;
- options;
- theme settings.
Choose the storage model based on the content’s lifecycle and meaning, not merely on the convenience of getting another menu in wp-admin.
Post types should represent domain concepts
A useful architecture usually creates post types around concepts that make sense to the people managing the website.
Good examples include:
Property
Course
Event
Project
Documentation
Job
Less useful examples may include implementation details such as:
Homepage Card
Purple Section
Left Column Box
unless those components genuinely need independent content management.
Custom post types can simplify team workflows
A dedicated content structure can make responsibilities clearer.
For example:
Marketing team
→ Blog Posts
Project Managers
→ Projects
HR
→ Jobs
Documentation team
→ Documentation
Each group sees a content system aligned with what they actually manage.
This becomes even more useful when combined with appropriate permissions and custom admin views.
Think about the lifecycle before creating the type
Before registering a custom post type, ask:
- Who creates these items?
- Who edits them?
- Are they public?
- Should they appear in search?
- Do they need an archive?
- Which fields describe them?
- Which taxonomies classify them?
- Do they need revision history?
- Are they exposed through REST?
- What happens if the plugin providing them is removed?
- What URL structure should remain stable for years?
If those questions cannot be answered, registration code is probably premature.
Create the post type before accumulating the content
If you already know the website will eventually contain 2,000 Projects, defining a Project post type before adding them is considerably easier than converting 2,000 Blog Posts later.
Migration is possible, but architecture is cheaper before content begins multiplying.
Prototype custom post types on staging
Before introducing a large structural change on an established website, test it outside production.
Check:
- editor behavior;
- templates;
- permalinks;
- taxonomies;
- REST output;
- permissions;
- archives;
- SEO metadata;
- sitemaps;
- existing queries.
WordPress staging site best practices covers the broader workflow for structural testing.
Take care when removing plugins that register post types
A plugin cleanup can accidentally become a content outage.
If a plugin appears unused, first determine whether it registers a post type that another part of the site depends on.
Auditing WordPress plugins on a client site is especially relevant here because custom content structures are one of the dependencies that should be identified before deactivation.
Standard post type vs. custom post type at a glance
BUILT-IN POST TYPE
Registered by:
WordPress core
Examples:
post
page
attachment
Typical purpose:
General WordPress content structures
Can have:
Templates
Taxonomies
Metadata
Capabilities
REST support
Archives
Editor support
CUSTOM POST TYPE
Registered by:
Plugin, theme or custom code
Examples:
project
property
course
event
Typical purpose:
Project-specific content structures
Can have:
Templates
Custom taxonomies
Custom metadata
Custom capabilities
REST support
Archives
Custom editor configuration
The underlying WordPress concepts are largely the same.
The difference is who defines the type and what behavior that registration specifies.
A practical decision tree
Is this a genuinely different type of content?
│
├── No
│ │
│ ├── Is it only a classification?
│ │ → Use a taxonomy/category
│ │
│ ├── Is it only extra information?
│ │ → Use custom fields/meta
│ │
│ └── Is it simply another static site page?
│ → Use a Page
│
└── Yes
│
├── Does it need different templates?
├── Different fields?
├── Different taxonomies?
├── Different permissions?
├── Dedicated archives?
├── Separate URLs?
└── Different workflows?
│
└── Consider a custom post type
Common custom post type mistakes
Creating a custom post type for every category
Classification and content type are different concepts.
Creating a type for every custom field group
Extra information about an object does not necessarily represent another object.
Registering business-critical post types only in the theme
Changing themes can remove the registration code.
Publishing hundreds of entries before deciding the URL structure
Changing the rewrite later creates a migration problem.
Assuming every custom post type should have a public archive
Archives need a purpose too.
Assuming every public custom post type should be indexed
Public accessibility and search value are separate questions.
Ignoring REST API exposure
Headless and editor workflows may depend on it, while sensitive internal structures may not need it.
Ignoring permissions
Different content ownership models may require different capabilities.
Ignoring taxonomies during conversion
Categories and custom term relationships do not automatically transform into the destination structure.
Removing a plugin without checking whether it registered the type
The database records may remain while their interface and routing disappear.
Using custom post types because they sound more professional
Architecture does not improve merely because the database has acquired additional nouns.
WordPress custom post type planning checklist
- Define what the content represents.
- Confirm it is genuinely different from existing Posts or Pages.
- Check whether a taxonomy would solve the problem more simply.
- Separate object data from classifications and custom fields.
- Choose a stable post type key.
- Choose a stable public URL structure.
- Decide whether entries are public.
- Decide whether they are publicly queryable.
- Decide whether they belong in site search.
- Decide whether the post type needs an archive.
- Define supported editor features.
- Define required custom fields.
- Define taxonomies.
- Define capabilities and ownership.
- Decide whether REST API support is required.
- Plan templates.
- Plan admin list-table information.
- Plan sitemap inclusion.
- Plan SEO metadata.
- Register important site functionality outside the theme where appropriate.
- Test the architecture on staging.
- Plan redirects before converting existing content.
Related WordPress content architecture guides
For the wider WordPress content model, development and migration topics, continue with:
- What happens to taxonomies when you change post type
- WordPress custom post types and SEO
- WordPress admin list tables, explained
- WordPress REST API security basics
- WordPress user roles and capabilities, explained
- How WordPress post revisions work
- How to migrate WordPress URLs safely
- 301 vs. 302 vs. 410: which redirect to use
- Auditing WordPress plugins on a client site
- WordPress staging site best practices
- WordPress Block Editor CSS, Explained
- Post Type Converter
- Custom Content Columns
- Custom Sort Order
- SEO Meta
- XML Sitemap
- Redirect Manager
- Disable Gutenberg
Final thoughts
WordPress custom post types are not a separate content system bolted onto WordPress. They are an extension of the same post-type architecture WordPress already uses for Posts, Pages, Attachments and other content objects.
The important question is therefore not whether custom post types are better than ordinary Posts. It is whether a particular group of content is different enough to deserve its own structure.
If the difference is only classification, use a taxonomy. If you only need additional properties, use custom fields. If the content genuinely has its own templates, URLs, taxonomies, permissions, archives or workflow, a custom post type can provide a much cleaner model.
TheOneWP Post Type Converter helps when an existing site needs to move content into a more appropriate type, while Custom Content Columns, Custom Sort Order, SEO Meta and XML Sitemap cover other parts of operating purpose-built content structures.
The goal is not to create as many post types as possible. It is to make WordPress’s content model describe the website clearly enough that developers, editors and visitors can all understand what belongs where.
If a new post type makes that distinction clearer, it is probably useful. If it merely gives wp-admin another menu item, humanity can probably survive without it.

