Get Started
 Creating a WordPress Custom Post Type
Home  ⇒  Uncategorized   ⇒    Creating a WordPress Custom Post Type

A Custom Post Type (CPT) in WordPress allows developers to create specialized content types beyond the default Posts and Pages. Examples include Books, Movies, Products, Events, and Pets.

Using a CPT helps organize content and provides a dedicated administration interface within the WordPress dashboard.

 Why Use a Custom Post Type?

WordPress includes several built-in post types:

* Posts

* Pages

* Attachments

* Revisions

* Navigation Menus

When a project requires a unique content structure, a custom post type is the recommended solution.

 Best Practice: Register CPTs in a Plugin

Instead of adding CPT code directly to a theme's `functions.php` file, create a plugin. This ensures the content type remains available even if the theme changes.

Example plugin header:

```php

<?php

/*

 * Plugin Name: Custom Post Type Register

 * Description: Registers custom post types

 * Author: Your Name

 */

```

 Step 1: Define Supported Features

Specify which editing features should be available:

```php

$supports = array(

    'title',

    'editor',

    'author',

    'thumbnail',

    'excerpt',

    'custom-fields',

    'comments',

    'revisions',

);

```

Step 2: Define Labels

Labels control how the post type appears in the WordPress administration panel.

```php

$labels = array(

    'name'          => 'Pets',

    'singular_name' => 'Pet',

    'menu_name'     => 'Pets',

    'add_new_item'  => 'Add New Pet',

);

```

 Step 3: Register the Custom Post Type

Create the CPT using `register_post_type()`.

```php

$args = array(

    'supports'    => $supports,

    'labels'      => $labels,

    'public'      => true,

    'has_archive' => true,

    'rewrite'     => array(

        'slug' => 'pets',

    ),

);

register_post_type('pets', $args);

```

 Step 4: Hook into WordPress Initialization

Register the post type during WordPress initialization.

```php

add_action('init', 'register_pet_post_type');

```

 Complete Example

```php

function register_pet_post_type() {

    $supports = array(

        'title',

        'editor',

        'thumbnail',

    );

    $labels = array(

        'name'          => 'Pets',

        'singular_name' => 'Pet',

        'menu_name'     => 'Pets',

    );

    $args = array(

        'supports'    => $supports,

        'labels'      => $labels,

        'public'      => true,

        'has_archive' => true,

        'rewrite'     => array(

            'slug' => 'pets',

        ),

    );

    register_post_type('pets', $args);

}

add_action('init', 'register_pet_post_type');

```

 Additional Notes

* Use lowercase CPT identifiers.

* Keep CPT names under 20 characters.

* Refresh permalinks after creating a CPT by visiting **Settings → Permalinks** and clicking **Save Changes**.

* Consider enabling REST API support for compatibility with the Gutenberg editor and headless WordPress applications.

 Conclusion

Custom Post Types are a core WordPress feature that enables structured content management. Registering CPTs through a plugin provides a maintainable and reusable approach for extending WordPress functionality.

If you need this as a formal project report, technical documentation, or academic-style document, I can reformat it accordingly.