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

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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:

Hope that helps. 🙂

Method 2

Yes, that is implemented in 3.1, you have to make sure that the arguments passed to register_post_type have the has_archive flag set to true. See the Codex page about it.

You might also need to visit your permalink settings page and resubmit them, that seems to help things often.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x