WordPress 3.0 will introduce a simple programatic way for developers to create custom post types. I’ve seen people talking at length about this feature, but most discussion focuses on how you can have a custom display for certain content, support custom URL structures or manage content differently. These things aren’t new – they are all things you could do previously without too much trouble by using a little custom code with taxonomies or post meta (especially with the Carrington framework).
No, the real power of custom post types is more subtle – it removes those posts from default queries.
Selecting posts based on certain criteria has always been pretty straightforward in WordPress. What has been hard has been excluding that content from all default queries (home, archives, category, feeds, comment feeds, etc.). By using a custom post type, you can easily exclude content from these default queries, and this is a huge win.