I have a wordpress website with bunch of posts. My problem is that I need to change the URLs from




The "specialword" is what I need to add in front of those post names, but ONLY for the post type - posts.

Can someone help me?

I need this badly, mostly because of the SEO purposes so I can keep the URLs from the previous website that wasn't done in wordpress.

Thank you! Slavisa


2 Answers 2


You can do it from Settings > Permalinks.

Select the Custom Structure radio button, and put this in the text field next to it:



  • I know that, but I need this setting applied ONLY to post type posts, not all types of posts (pages, custom post types, etc) Sep 27, 2012 at 7:23
  • Have you tried it? Sep 27, 2012 at 7:53
  • Of course I have, and it works fine for posts and pages, but the custom post type pages have the url: /myspecialword/custom-post-type/%postname% Oct 3, 2012 at 10:19
  • Ohh yes... Cuz the special word gets appended after the url. I guess you might need a URL rewrite. Oct 4, 2012 at 5:13
  • Adding rewrite rule won't be sufficient in this case. If you do this, get_permalink still will be generating wrong links for such custom post type... Jun 28, 2013 at 11:20

I think the only (the easiest) solution is to change permastructs for custom post types after registering them and add your 'magic word' to permalink structure.

So set (in parmalinks settings) your permalink structure to: /my-magic-word/%postname%/ and then manually modify permastructs of your custom post types.

You can do this like so (add it to your functions.php file):

function my_init() {
    global $wp_rewrite;

    // Let's assume you register your CPT Books in here
    $args = array( 'public' => true, 'label' => 'Books' );
    register_post_type( 'book', $args );

    // after registering your CPT, you have to change it's permastruct
    $wp_rewrite->extra_permastructs['book']['struct'] = "book/%book%";  // it's without 'my-magic-word' - you should do this for every CPT that should not have 'my-magic-word' in url
add_action('init', 'my_init');

Then go to permalink settings and save them to flush rewrite rules.

PS. I think you could try to use with_front param, but I'm not sure if it will be easier (or if it even will work) than this solution.

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.