WP 3.1 – archive pages for custom content types possible now without a plugin?

I noticed that WP 3.1 supposedly has ‘new CMS capabilities like archive pages for custom content types’, however, I can’t see that implemented yet?

I’ve been using a plugin called ‘Simple Custom Post Type Archives’ to view custom posts at the url http://www.domainname.com/custom-post-type/, but wanted to use the in-built capability considering it is ‘now possible’.

Has anyone else had the same issue?

Thanks

osu

PS. I’m using archive-custom_post_type_name.php to try and style my custom post type archive page

2 Answers
2

Yes, you’ll just need to set the has_archive parameter to true or your chosen slug when registering your custom post type.

So firstly add the has_archive parameter to your post type, here’s an example…

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

}

The has_archive parameter supports the following settings.

  1. false (default)

    No archive

  2. true

    The archive url is formulated from the post type slug

    www.example.com/example/

  3. string

    The archive url is explicitly set to the slug you provided

    www.example.com/my-example-archive/

Once you’ve added the parameter visit the permalink page, this will cause a regeneration of the rewrite rules, accounting for the custom post type archive.

Lastly, 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).
Noting, that {$post_type} would of course represent the slug of your actual post type.

Sourced information:

  • Mark McWilliams also wrote about this
    on his blog:
    WordPress 3.1 Introduces Custom Post Type Archives
  • Trac ticket that introduced the new
    post type archives.
    Ticket #13818 – There should be index pages for custom post
    types

Hope that helps. 🙂

Leave a Comment