WP Permastructure


In addition to controlling your custom post type permalinks this plugin adds support for using custom taxonomies in your permalink structures as well.

Not only that but you can control the full permalink so the post type slug is not required at the start of the link.

Multiple post types can use the same permalink structure.


There are 2 ways to use this plugin:

Permalink Settings

The plugin adds fields to the permalinks settings page for any public facing custom post types.

In Code

When registering a post type you can add a value to the rewrite property with the key ‘permastruct’ to define your default permalink structure.



register_post_type( 'my_type', array(
    'rewrite' => array(
        'permastruct' => '/%custom_taxonomy_name%/%author%/%postname%/'
) );



  • The extended permalink settings panel


  1. You can install the plugin using the auto-install tool from the WordPress back-end.
  2. To manually install, upload the folder /wp-permastructure/ to /wp-content/plugins/ directory.
  3. Activate the plugin through the ‘Plugins’ menu in WordPress
  4. You should now see input boxes for any custom post types you have on the permalink settings page


None so far.



OMG, your plugin is awesome 😀 thank you so much for this excellent plugin

Works like a charm!

I wanted to rewrite a custom post type permalink that would include a taxonomy term (www.site.com/custom-post-type/term/postname) but I was unable to make it work. I tried bits and pieces of code I found on StackExchange but none worked 100%.

I found this plugin and after activating it and updating the permalink structure for my post type, my permalink structure worked like a charm!

Archive pages for post and taxonomy work also.

Not sure what I did is correct, but both my CPT and the taxonomy have the same slug in the rewrite rule.

Read all 13 reviews

Contributors & Developers

“WP Permastructure” is open source software. The following people have contributed to this plugin.



  • 1.4: Handles sample filters without the need for the get post call
  • 1.3: Added permalink sanitisation function, current one incorrectly truncated placeholders
  • 1.2: Fixed attachment URL rewrites, fixed edge case where permastruct is %postname% only
  • 1.1: Fixed problem with WP walk_dirs and using %category% in permalink – overly greedy match
  • 1.0: Initial import