Title: Creating Your First Post Type
Published: February 20, 2025
Last modified: September 3, 2025

---

# Creating Your First Post Type

## In this article

 * [Prerequisites](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#prerequisites)
 * [1. Access the Admin Panel](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#1-access-the-admin-panel)
 * [2. Basic Configuration](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#2-basic-configuration)
    - [Plural Label *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#plural-label)
    - [Singular Label *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#singular-label)
    - [Post Type Key *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#post-type-key)
    - [Taxonomies](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#taxonomies)
    - [Public](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#public)
    - [Hierarchical](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#hierarchical)
    - [Advanced Configuration](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#advanced-configuration)
 * [3. Advanced Settings](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#3-advanced-settings)
    - [Supports](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#supports)
    - [Description](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#description)
    - [Active](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#active)
    - [Labels](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#labels)
    - [Visibility Options](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#visibility-options)
    - [Menu Icon and Position](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#menu-icon-and-position)
    - [Permalinks and URLs](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#permalinks-and-urls)
    - [Permissions](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#permissions)
    - [REST API Settings](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#rest-api-settings)
 * [4. Testing](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#4-testing)
 * [Next Steps](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#next-steps)
 * [For Developers](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#for-developers)

[ Back to top](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#wp--skip-link--target)

A step-by-step guide to creating a custom post type using Secure Custom Fields (
SCF).

**What is a custom post type?**

In WordPress, a custom post type (CPT) is a content type like posts and pages, but
customized to suit your specific needs. You can use CPTs to manage products, portfolios,
testimonials, events, vehicles, and more—essentially any type of structured content
that needs its own menu and fields.

## 󠀁[Prerequisites](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#prerequisites)󠁿

 * SCF installed and activated
 * Administrator access to WordPress
 * Basic understanding of WordPress concepts

You can learn more about WordPress basics here:

 * [Theme Basics](https://developer.wordpress.org/themes/basics/)
 * [Plugin Basics](https://developer.wordpress.org/plugins/plugin-basics/)

## 󠀁[1. Access the Admin Panel](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#1-access-the-admin-panel)󠁿

To begin creating your custom post type:

 * Go to **Secure Custom Fields  Post Types** in your WordPress admin menu.
 * Click the **“Add New”** button to open the creation form.

## 󠀁[2. Basic Configuration](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#2-basic-configuration)󠁿

These fields help you define how your post type will appear and behave:

### 󠀁[Plural Label *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#plural-label)󠁿

This is the name that will appear in the admin sidebar. For example, `Movies`.

### 󠀁[Singular Label *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#singular-label)󠁿

Used for individual entries. Example: `Movie`.

### 󠀁[Post Type Key *](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#post-type-key)󠁿

A technical identifier for WordPress to recognize this post type. Use lowercase 
letters and underscores only. Max 20 characters. Example: `movie`.

### 󠀁[Taxonomies](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#taxonomies)󠁿

Choose existing taxonomies like **category** or **tags** if you want to group or
filter your content. You can also select custom ones like **Brand** or **Color**.

### 󠀁[Public](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#public)󠁿

Choose **Yes** to make your post type visible on the website and admin area. Choose**
No** to keep it private.

### 󠀁[Hierarchical](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#hierarchical)󠁿

Set to **Yes** if you want your items to be nested (like pages). Set to **No** for
a flat list (like blog posts).

### 󠀁[Advanced Configuration](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#advanced-configuration)󠁿

Enable this to unlock more advanced options, useful when you need more control over
how your post type works.

## 󠀁[3. Advanced Settings](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#3-advanced-settings)󠁿

These options let you customize deeper behaviors and labels.

### 󠀁[Supports](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#supports)󠁿

Select which features to enable when editing a post, such as:

 * **Title**: Adds a title field
 * **Editor**: Main content box
 * **Featured Image**: Allow image upload
 * **Comments**, **Author**, **Excerpt**, etc.

### 󠀁[Description](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#description)󠁿

A short explanation of what this post type is about. Helpful for organization.

### 󠀁[Active](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#active)󠁿

Make sure this is set to **Yes** so your post type is registered and usable.

### 󠀁[Labels](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#labels)󠁿

These are the texts that WordPress shows throughout the dashboard. For example:

 * **Menu Name**: What appears in the sidebar
 * **Add New Item**: Button to create a new entry
 * **Edit Item**, **View Item**, **Search Items**, etc.
    You can keep the default
   labels or customize them to your liking.

### 󠀁[Visibility Options](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#visibility-options)󠁿

Control where your post type appears in the admin and site:

 * Show in dashboard menu
 * Show in admin bar
 * Show in appearance menus

### 󠀁[Menu Icon and Position](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#menu-icon-and-position)󠁿

Choose an icon for your post type from the WordPress Dashicons set. Optionally, 
set its position in the sidebar.

### 󠀁[Permalinks and URLs](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#permalinks-and-urls)󠁿

You can define how URLs will look for your post type:

 * **Slug**: A custom word for your URL (e.g., `/movie/`)
 * Enable archive and pagination
 * Optionally include RSS feeds

### 󠀁[Permissions](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#permissions)󠁿

If needed, you can assign custom capabilities like `edit_movie` or `delete_movies`.
Useful for advanced role control.

### 󠀁[REST API Settings](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#rest-api-settings)󠁿

Enable this if you plan to use the post type with the block editor or external tools.

 * You can customize the API route, namespace, or controller class if needed.

## 󠀁[4. Testing](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#4-testing)󠁿

Once everything is set up:

 * Click **Save** to register your post type.
 * Go to the WordPress dashboard menu where your new post type now appears.
 * Click **Add New** and create a test entry.
 * Visit your website and check that it appears correctly on the frontend.

## 󠀁[Next Steps](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#next-steps)󠁿

 * Add custom fields to your post type via Secure Custom Fields
 * Configure how archives and single templates are displayed in your theme
 * Set up or register your own taxonomies for more organization

## 󠀁[For Developers](https://developer.wordpress.org/secure-custom-fields/tutorials/first-post-type/?output_format=md#for-developers)󠁿

If you’re a developer and prefer to register custom post types using code instead
of the admin interface, you can refer to the official WordPress documentation:

[How to Create Custom Post Types with Code](https://developer.wordpress.org/plugins/post-types/)

This guide includes examples and explanations on using `register_post_type()` and
other related functions.

First published

February 20, 2025

Last updated

September 3, 2025

Edit article

[ Improve it on GitHub: Creating Your First Post Type ](https://github.com/wordpress/secure-custom-fields/edit/trunk/docs/tutorials/first-post-type.md)

Changelog

[ See list of changes: Creating Your First Post Type ](https://github.com/wordpress/secure-custom-fields/commits/trunk/docs/tutorials/first-post-type.md)

[  Previous: Creating Your First Options Page](https://developer.wordpress.org/secure-custom-fields/tutorials/first-options-page/)

[  Next: Creating Your First Taxonomy](https://developer.wordpress.org/secure-custom-fields/tutorials/first-taxonomy/)