The site that I am working on uses the following “pretty” permalink structure:
http://example.com/blog/my-special-post
But for a custom post type my client would like to avoid having a “pretty” slug:
http://example.com/product/142
How can the post ID be used in place of the slug?
I believe that this might be possible using WP_Rewrite, but I do not know where to begin.
I posted the same question on WordPress stack exchange site and received a good solution:
WordPress StackExchange – How to rewrite URI of custom post type?
All of WP’s posts/pages, regardless of their type, can be reached via
http://example.com/?p=foo
, wherefoo
is the post ID.By default, redirection to a “pretty permalink” takes place though.
On the WP Codex entry for register_post_type() (I assume that’s what you’re using to set up your CPT, right?), the
rewrite
argument is described:So, using
should yield what you’re looking for.
In the WP admin you can chane the display of the permalinks by going to ‘Settings->Permalinks’. To achieve your desired results, set the custom structure to
/%post_id%/
. Unless you manually edit .htaccess and the WP rewrite rules, I don’t think you can achieve a structure where you have the post slug in the URI for one post type, but the ID for another.