5

Does anybody know how to modify the url struct only for the single post page?

When I go to a post page, the url should look like: example.com/xxx/my-post. All other urls (with the exception of the single post pages) should not contain "xxx" in the url.

Customizing the permalink settings would add xxx in front of taxonomies and categories as well, so that wouldn't work for what I need.

Essentially, I want that all "post" and "events" urls co contain an extra "xxx" segment in the structure.

3

The solution is to reregister the default post type just after Wordpress, and to add a rewrite slug. Also, the _builtin param needs to be set to false.

add_action( 'init', 'my_new_default_post_type', 1 );
function my_new_default_post_type() {

    register_post_type( 'post', array(
        'labels' => array(
            'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
        ),
        'public'  => true,
        '_builtin' => false, 
        '_edit_link' => 'post.php?post=%d', 
        'capability_type' => 'post',
        'map_meta_cap' => true,
        'hierarchical' => false,
        'rewrite' => array( 'slug' => 'post' ),
        'query_var' => false,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}
  • Hi this code changed my URL but pagination not working. – dh47 Aug 10 '16 at 11:42
  • That works well for me, thanks. Note that it creates double "Posts" menu item but the content is same and works so all is well. I removed it with JS snippet. @dh47 I had no issues with pagination. – dsomnus Oct 19 '16 at 17:09
2

Another method without the potential side-effects of registering a new post type is to modify the rewrite rules to remove the permalink front.

function wpa37911_permastructs(){
    global $wp_rewrite;
    $wp_rewrite->extra_permastructs['category']['struct'] = '/category/%category%';
    $wp_rewrite->extra_permastructs['post_tag']['struct'] = '/tag/%post_tag%';
}
add_action( 'init', 'wpa37911_permastructs' );

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.