Exciting News! Flipper Code is now WePlugins! Same commitment to excellence, brand new identity.

Create Dynamic Custom Post Types in WordPress

Sandeep Kumar Mishra
Sandeep Kumar Mishra
in Posts > Tech
August 7, 2021
5 minutes read
Create Dynamic Custom Post Types in WordPress

Custom post types & custom fields are widely used at our company and without these, we can’t imagine a website other than a blog.

We don’t use any plugin to create custom post types because of following reasons.

  • To avoid unnecessary dependencies on third party plugins.
  • Errors in the upcoming release of the plugin can affect our custom programming and might be bugs on the live site.
  • If client uninstalls this accidentally after a long period of development which happens sometimes.

This guides is about to create dynamic custom post types using procedure & oops programming and we guess after reading it, you’ll never use any plugin because it’s super easy to do.

Procedural Way to Create a Custom Post Types

Procedure oriented programming is preferred if you’re creating a custom post type in theme. You can write it in functions.php located at your installed theme. Below are the steps to understand it easily.

  1. Step 1: Make sure WordPress recognize your function on load so we use “init” action to register our function.
    add_action( 'init', 'create_custom_post_type' );
  2. Step 2: now in the definition of function ‘create_custom_post_type’, we can register as many as custom post type we need.
    function create_custom_post_type() {
        register_post_type( 'slides',
                'labels' => array(
                    'name' => __( 'Slides' ),
                    'singular_name' => __( 'Slide' )
            'public' => true,
            'has_archive' => true,

    Note: If we’re creating custom post type to save some private data, don’t make it ‘public’=>true and not need for ‘has_archive’=>true if the custom post type is not public.

  3. OOPS Way to Create a Custom Post Types

    Object oriented programming is preferred if you’re creating a custom post type using a plugin. Below is “Custom_Posts” class which we use for our projects.

    class Custom_Posts {
        function __construct($init) {
            $this->settings = $init;
            add_action( 'init', array(&$this, 'add_custom_post_type') );
         function add_custom_post_type() {
            register_post_type( $this->settings['slug'],
                'labels' => array(
                    'name' => __( $this->settings['name'] ),
                    'singular_name' => __( $this->settings['singular_name'] )
            'public' => $this->settings['is_public'],
            'has_archive' => $this->settings['has_archive'],

    Now you need to just initialize this object with your new custom post settings. Below is example code to create a SLIDES custom post type.

    $custom_posts = array(
        "slug" => "slides",
        "name" => "slides",
        "singular_name" => "slide",
        "is_public" => true,
        "has_archive" => false,
    $var = new Custom_Posts ($custom_posts);


    Adding too many custom post types is not a good practice because that’s can affect your speed of database transactions. Some of the developers prefer a dedicated category of the posts instead of a new custom post types which are not a good idea. If you don’t want to make your custom post type public, I’d prefer a new custom table instead of a new custom post type.

Explore the latest in WordPress

Trying to stay on top of it all? Get the best tools, resources and inspiration sent to your inbox every Wednesday.