A custom post type on wordpress is like a sidebar menu option on wordpress. Like you have a wordpress site. When you logged in you can see many menus on the right sidebar. There is many options like posts, pages, media, products etc. All of those are post type. So when you want to add menu like this of your own it called custom post type. For example you wanted to add a post RealEstate. So after adding custom post type of real estate you will able to add post for your realestate. With custom post you can register custom field for the related terms like badroom, bathrooms, parking etc.

These are the default custom post type on wordpress:

  1. Post (Post Type: ‘post’)
  2. Page (Post Type: ‘page’)
  3. Attachment (Post Type: ‘attachment’)
  4. Revision (Post Type: ‘revision’)
  5. Navigation Menu (Post Type: ‘nav_menu_item’)
  6. Custom CSS (Post Type: ‘custom_css’)
  7. Changesets (Post Type: ‘customize_changeset’)
  8. User Data Request (Post Type: ‘user_request’ )

Check the image with red boxed. They are the visual example of custom post type

What do you need before creating a custom post type on you wordpress website?
here we go…

First of you need to register your custom post type on your theme file name functions.php. The name of the function is register_post_type  . Here is the example of the function use. You can use this code to generate your custom post type. Just replace the name, details etc.

// Register Custom Post Type
function custom_post_type() {

$labels = array(
‘name’ => _x( ‘Post Types’, ‘Post Type General Name’, ‘text_domain’ ),
‘singular_name’ => _x( ‘Post Type’, ‘Post Type Singular Name’, ‘text_domain’ ),
‘menu_name’ => __( ‘Post Types’, ‘text_domain’ ),
‘name_admin_bar’ => __( ‘Post Type’, ‘text_domain’ ),
‘archives’ => __( ‘Item Archives’, ‘text_domain’ ),
‘attributes’ => __( ‘Item Attributes’, ‘text_domain’ ),
‘parent_item_colon’ => __( ‘Parent Item:’, ‘text_domain’ ),
‘all_items’ => __( ‘All Items’, ‘text_domain’ ),
‘add_new_item’ => __( ‘Add New Item’, ‘text_domain’ ),
‘add_new’ => __( ‘Add New’, ‘text_domain’ ),
‘new_item’ => __( ‘New Item’, ‘text_domain’ ),
‘edit_item’ => __( ‘Edit Item’, ‘text_domain’ ),
‘update_item’ => __( ‘Update Item’, ‘text_domain’ ),
‘view_item’ => __( ‘View Item’, ‘text_domain’ ),
‘view_items’ => __( ‘View Items’, ‘text_domain’ ),
‘search_items’ => __( ‘Search Item’, ‘text_domain’ ),
‘not_found’ => __( ‘Not found’, ‘text_domain’ ),
‘not_found_in_trash’ => __( ‘Not found in Trash’, ‘text_domain’ ),
‘featured_image’ => __( ‘Featured Image’, ‘text_domain’ ),
‘set_featured_image’ => __( ‘Set featured image’, ‘text_domain’ ),
‘remove_featured_image’ => __( ‘Remove featured image’, ‘text_domain’ ),
‘use_featured_image’ => __( ‘Use as featured image’, ‘text_domain’ ),
‘insert_into_item’ => __( ‘Insert into item’, ‘text_domain’ ),
‘uploaded_to_this_item’ => __( ‘Uploaded to this item’, ‘text_domain’ ),
‘items_list’ => __( ‘Items list’, ‘text_domain’ ),
‘items_list_navigation’ => __( ‘Items list navigation’, ‘text_domain’ ),
‘filter_items_list’ => __( ‘Filter items list’, ‘text_domain’ ),
$args = array(
‘label’ => __( ‘Post Type’, ‘text_domain’ ),
‘description’ => __( ‘Post Type Description’, ‘text_domain’ ),
‘labels’ => $labels,
‘supports’ => false,
‘taxonomies’ => array( ‘category’, ‘post_tag’ ),
‘hierarchical’ => false,
‘public’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘menu_position’ => 5,
‘show_in_admin_bar’ => true,
‘show_in_nav_menus’ => true,
‘can_export’ => true,
‘has_archive’ => true,
‘exclude_from_search’ => false,
‘publicly_queryable’ => true,
‘capability_type’ => ‘page’,
register_post_type( ‘post_type’, $args );

add_action( ‘init’, ‘custom_post_type’, 0 );

So we are almost done with our custom post type. The next thing you need to complete your custom post type is add custom fields to you post type you created.

The easiest way to add custom fields on wordpress is to use a plugin called Advanced custom fields. Here is the link. Download it and add your any custom field you want. If you need help please comment. I will help you if you need.

Also you can add meta box by putting functions to you functions.php file. to register me boxes for you CPT(custom post type). Here is an example of adding custom meta box to a selected custom post type. Here i am using the custom post type ‘realEstate’:

function my_realestate_meta_box( $meta_boxes ) {
$prefix = ‘prefix-‘;

$meta_boxes[] = array(
‘id’ => ‘rooms’,
‘title’ => esc_html__( ‘Rooms’, ‘realestate’ ),
‘post_types’ => array(‘post’, ‘page’ ),
‘context’ => ‘advanced’,
‘priority’ => ‘default’,
‘autosave’ => ‘false’,
‘fields’ => array(
‘id’ => $prefix . ‘room_no’,
‘type’ => ‘number’,
‘name’ => esc_html__( ‘How many rooms?’, ‘realestate’ ),
‘desc’ => esc_html__( ‘Add the rooms have on your flat’, ‘realestate’ ),
‘std’ => ‘2’,

return $meta_boxes;
add_filter( ‘rwmb_meta_boxes’, ‘my_realestate_meta_box’ );

So this is the end of our tutorial on custom post type creation on wordpress.

If you have any issue with my post please let me know on comment. I will reply as soon as I can.

Also check my youtube channel for more tutorial on tech world https://youtube.com/owltechmedia