In 2010 version 3.0 of WordPress introduced a feature called Custom Post Types which allows users to define their own content and display it in custom templates
By default, WordPress comes with some predefined post types. If you use posts or pages, then these are two of the “post types” already defined in WordPress.
WordPress can be modified with as many custom post types (CPT), defined by you, as you require. An example of this could be a section to add products for an e-commerce store or a portfolio area to add recent projects that you have worked on.
CPTs can be made to behave either like posts or pages. The difference is that posts are date based and include archive functionaility whilst pages are hierarchical. Once you have defined a CPT you can then create specific template files for it. Say we have a testimonial CPT, it would then automatically use, if available, template files called archive-testimonial.php and single-testimonial.php in your theme folder. These could be styled differently in some way of include additional scripts. If those custom template files aren’t available, then WordPress falls back to the default archive.php and single.php templates.
To see a CPT in action you need to look no further. The testimonials you see scrolling on my homepage are a CPT and my portfolio section is also a CPT. This allows me to manage and structure my content much more efficiently.