Create Personalized WordPress CPT

Power of Custom Post Types for Tailored Content Management

Jul 30, 2023ยท

4 min read

Create Personalized WordPress CPT
Play this article


WordPress is a powerful and versatile platform that allows you to build websites and publish content with ease. One of the remarkable aspects it offers is the incorporation of Custom Post Types (CPTs), which enable you to organize and display various content types outside of the default posts and pages. Whether you're a blogger, a business owner, or a developer, learning how to create personalized WordPress CPTs can add a whole new dimension to your website and enhance its functionality.

With this blog, will go through the process of creating personalized WordPress Custom Post Types in a structured and organized manner.

What Is Custom Post Type in WordPress?

WordPress stores Post Types, including both the default ones and Custom Post Types registered by developers, in the posts table. This provides developers the ability to extend the existing Post Types with their own personalized content types.

A Guide to Registering Custom Post Types in WordPress

Within WordPress, there are five pre-defined post types: post, page, attachment, revision, and menu.

However, during the development of your plugin, you might require a unique content type, such as products for an e-commerce website, assignments for an e-learning platform, or movies for a review site.

To achieve this, WordPress provides Custom Post Types, allowing you to register your post type. Upon successful registration, your custom post type gains a new top-level administrative screen, enabling efficient management and creation of posts within that specific type.

To register a fresh post type, you can utilize the register_post_type() function.

The suggestion is to place custom post types in a plugin rather than a theme. By doing so, you ensure that user content remains portable, even if there are changes to the theme.

The given code snippet demonstrates a simple example of registering a new post type named "Books" in the WordPress database, identified as "wppfx_book"

function wppfx_custom_post_type() {
            'labels'      => array(
                'name'          => __('Books', 'textdomain'),
                'singular_name' => __('Book', 'textdomain'),
            'public'      => true,
            'has_archive' => true,
add_action('init', 'wppfx_custom_post_type');

Once the function wppfx_custom_post_type() is hooked to the 'init' action using add_action(), the custom post type "Books" will be registered and available for use on your WordPress site.

To ensure proper execution, it is important to call register_post_type() before the admin_init hook and after the after_setup_theme hook. For this purpose, the recommended hook to use is the init action hook.

Exploring Custom Post Types


  1. Custom Post Type Templates

    For custom post types, you can create unique templates:

    1. single-{post_type}.php for individual posts

    2. archive-{post_type}.php for post-type archives

Replace {post_type} with your post-type identifier from register_post_type().

You can create, for example, single-wppfx_book.php and archive-wppfx_book.php.

Alternatively, use is_post_type_archive() to check for archive pages and post_type_archive_title() to display the post-type title.

  1. Post Type-Based Queries

    To retrieve posts of a specific type, you can use the post_type key in the arguments array of the WP_Query class constructor.

$args = array(
    'post_type'      => 'book',
    'posts_per_page' => 10,
$loop = new WP_Query($args);
while ( $loop->have_posts() ) {
    <div class="entry-content">
        <?php the_title(); ?>
        <?php the_content(); ?>

In this example, the code fetches and displays the latest ten posts of the "book" post type. The title and content of each post are shown one by one using a loop.

  1. Modifying the Main Query

    In the following instance, posts from various post types, namely post, page, and movie, will be displayed on the homepage:

     phpCopy codefunction wppfx_add_custom_post_types($query) {
         if ( is_home() && $query->is_main_query() ) {
             $query->set( 'post_type', array( 'post', 'page', 'movie' ) );
         return $query;
     add_action('pre_get_posts', 'wppfx_add_custom_post_types');

    This code snippet alters the main query, ensuring that posts from the specified post types are included when users access the homepage (checked using the is_home() condition). By utilizing the pre_get_posts action hook, the query is intercepted before execution, and the set() method is applied to update the post types accordingly.


In conclusion, custom post types provide a powerful way to extend the functionality of WordPress and organize different types of content on your website. By creating personalized templates for custom post types, you can design unique layouts for individual posts and their archives. Additionally, querying posts based on their post types allows you to display specific content on different pages, enhancing the overall user experience.

Furthermore, altering the main query enables you to customize the content displayed on the homepage or any other page, including posts from multiple post types. This flexibility empowers you to create diverse and engaging websites tailored to your specific needs.

Overall, working with custom post types opens up endless possibilities for organizing, displaying, and managing content in WordPress, making it a valuable feature for developers and site owners alike.

Did you find this article valuable?

Support Mansi Jani by becoming a sponsor. Any amount is appreciated!