Custom post types allow WordPress content types to be more flexible than the defaults (such as Post and Page). Elements added by plugins like "Product," "Contact Form," or "Portfolio Item" are custom post types.
Custom post types are registered with WordPress's register_post_type() function, which takes a large array of optional parameters. Many third-party plugins also exist that automate custom post type registration.
Custom post types have little default functionality (beyond their own permalink structure and area in the WordPress admin menu). However, they can be extensively customized without affecting WordPress's other content types; as such, they make a natural combination with WordPress's custom post data systems (custom fields and custom taxonomies).
Custom post types are a crucial technical element that allows WordPress to break out of the blogging space—and offer e-commerce products, portfolios, real estate listings, and goodness knows what...