I only use 'placeholder' pages if I'm listing just a few custom post types with no pagination (or any other miscellaneous data for that fact), so that the end user still has control over the things like the title & content (which you can use for introductory text and so forth).
It also has the advantage of getting listed in wp_list_pages()
, which is handy if you're using it for navigation elsewhere in your theme.
However, as @Daniel said, if you want to make benefit of a full-blown archive with pagination & feeds, opt for the has_archive
arg.
I tend to use a different slug for the archive as opposed to the single post, just for clarity.
So for example;
http://example.com/product/my-single-product/
And for archives;
http://example.com/products/
http://example.com/products/page/2
http://example.com/products/feed/
The code for it?
register_post_type( array(
'rewrite' => array(
'slug' => 'product', // defaults to post type name
'with_front' => true, // prepends slug to single posts, default true
'pages' => true, // support pagination, default true
'feeds' => true // support feeds, default matches 'has_archive'
),
'has_archive' => 'products' // if bool true, defaults to rewrite slug
) );