You just need to set the has_archive
parameter to true or your chosen slug when registering the post type.
add_action( 'init', 'question_10706_init' );
function question_10706_init() {
register_post_type( 'example', array(
'labels' => array(
'name' => __('Examples'),
'singular_name' => __('Example')
),
'public' => true,
'show_ui' => true,
'rewrite' => array(
'slug' => 'example',
'with_front' => false
),
//'has_archive' => true // Will use the post type slug, ie. example
//'has_archive' => 'my-example-archive' // Explicitly setting the archive slug
) );
}
- True - The archive url uses the post type slug
Eg. www.example.com/example/ - Explicit - Use whichever slug you've provided
Eg. www.example.com/my-example-archive/
Next visit the permalink page, doing this will regenerate the rewrite rules, accounting for the new post type archive.
Next create an archive-{$post_type}.php
template to handle that archive (it could be a straight copy->paste of your existing archive, make adjustments as necessary). {$post_type}
would represent the name of your actual post type.
Here's the ticket that introduced the new post type archives.
http://core.trac.wordpress.org/ticket/13818
Mark McWilliams also wrote about this on his blog, WordPress 3.1 Introduces Custom Post Type Archives.
Hope that helps. :)