My permalink settings is simply /%postname%/ (yes I read from the codex that this is bad performance practice). The result is:

  • a page url might look like site.com/pagename
  • a blog post looks like site.com/post-title
  • a portfolio (custom post type) post will look like site.com/portfolio/item-1

I would like my blog post page (single.php) to have a URL like site.com/blog/post-title. How might I do that?


Change your permalink structure to /blog/%postname%/.


To get your custom post type to leave out the /blog part, in its registration arguments array, set the rewrite argument like this:

'rewrite' => array( 'slug' => 'portfolio', 'with_front' => false )
| improve this answer | |
  • It won't "fail", those CPTs will just have 'blog' at the beginning of their permastruct. That's totally expected behavior. You could also filter those post types' rewrite rules on the '{$post_type}_rewrite_rules' filter, removing '/blog' from the beginning of any rule regexes. – John P Bloch Mar 29 '13 at 15:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.