Skip to main content
2 of 3
Fix typo
t31os
  • 18.7k
  • 3
  • 56
  • 68

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
    ) );

}

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. :)

t31os
  • 18.7k
  • 3
  • 56
  • 68