Use WordPress page instead of post type archive

Sorry if this is a duplicate – I can't find an answer.

How do I rewrite a custom post type archive page to a 'man-made' WordPress page?

For example:

  • Single page: http://www.mywebsite.com/cool-post-type/awesome-single-post/
  • Archive page: http://www.mywebsite.com/cool-post-type/

I want http://www.mywebsite.com/cool-post-type/ to rewrite to http://www.mywebsite.com/about-cool-post-types/.

Can I just do this with htaccess and what would the syntax be? (I'm not good at htaccess!)

This does not work:

RewriteRule ^cool-post-type\/\?$ /about-cool-post-types [L]

Or do I have to do this in the WordPress source code? I don't want to!

Topic custom-post-types Wordpress

Category Web


This one's actually pretty easy. When you declare your post type using register_post_type, you need to add a new argument for 'has_archive'.

So you'll add in something to the effect of:

'has_archive' => 'about-cool-post-types'

Then, go to your Settings > Permalinks to flush them and it should work. I tested it locally, and this seems to be the way to automatically generate your archive page at a different URL. Then, you should be able to create a page at the CPT's slug.


There's also a simple, 1-file plugin for this now, by the HumanMade folk;

https://github.com/humanmade/page-for-post-type

(Meta: I know answers with links aren't generally great, but I don't just want to copy and paste the source-code for that thing into an answer. What's the best strategy for this type of thing?)

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.