Custom permalinks help make website visitors understand what a page is about just by looking at the URL. You can change them to make URLs shorter or more detailed and descriptive, depending on what works best for your site.
This can include simplifying URLs, removing unnecessary words, or adding specific custom fields. By making URLs more readable you can improve site navigation, contributing to better user experience and therefore positively impacting SEO performance.
WordPress does not offer advanced permalink customization options out of the box. You can add these features either by using a plugin or inserting a code snippet. Plugins are generally easier to use and offer more flexibility, especially if you prefer not to work with PHP code.
Permalink Manager, released in 2016, remains one of the most reliable and widely used plugins for this purpose. It requires no coding, works alongside other popular plugins, and supports custom post types and taxonomies.
How to Implement Custom Permalinks?
By default, WordPress automatically separates custom content types with distinct URL structures. For example, products' URLs start with a "/product/" prefix. This system is simple and lightweight, and for many small websites, the original permalinks are fully sufficient.
If your project needs to reuse the URL structures or individual adjustments, you have to set-up custom permalinks. Permalink Manager offers tools designed for different needs. The section below outlines the core plugin's features and how to implement them.
Editing Custom Permalinks
Individual Changes
Using the included URL editor, you can change permalink for any page, post, custom post type, category, or taxonomy. This works similarly to the default WordPress slug editor, but with one key difference: instead of changing only the last part of the URL, you can edit the entire permalink.

With this plugin, you can edit permalinks for different post types and taxonomies separately, making it easier to manage them on larger sites.

Bulk Changes
If necessary, you may use Permastructures editor to quickly rearrange the permalinks of all items of any specific content type in any way you want. This allows you to, for example, remove the default "rewrite slug" or add custom fields to WordPress permalinks.

Auto-update Mode
By default, Permalink Manager does not update custom permalinks automatically. This gives you full control, allowing you to choose if and when to change URLs, preventing accidental changes that could harm organic traffic or link equity.
For the same reason, changing the “Permastructure” settings affects only new permalinks and does not modify existing ones to minimize potential negative SEO impact. To apply the new permalink format to existing URLs, you must first use the "Regnerate/reset" tool.
Exclusion Settings
You can choose to exclude specific content types or posts/terms by their IDs from Permalink Manager. For instance, you can set-up custom permalinks specifically for WooCommerce permalinks, leaving all other URLs unchanged.
Plugin's Performance
When the Permalink Manager first launched, it was intended to be used for a typical WordPress website with less than 20.000 subpages. Keeping this in mind, all custom permalinks are saved in a single database row. This is to prevent multiple SQL queries to the database from slowing down the pageload.
This approach works for the great majority of WordPress sites. However, it may not be optimal if you are planning on using the plugin to rewrite tens of thousands of permalinks. In this situation, the custom permalinks array may grow enormously. As a result, any activities on it may have an impact on pageload speed.
Please see this article for further information about the plugin's performance.
Common Use Cases
Adding a Category or Taxonomy to Custom Permalinks
Permalink Manager allows you to customize the permalink of your custom post types by using a slug from a taxonomy of your choice. In terms of UX, this structure provides a significant benefit. Creating a hierarchical content structure helps site visitors grasp it.
You may do this by using the plugin to automatically include the category in the URL whenever you create a new post or assign a taxonomy term to a custom post. Therefore, the plugin could alter the permalink to include the term's slug by default.
Custom post type ("car") permalink with related taxonomy ("car-brand") included:
http://example.com/%car-brand%/%car%http://example.com/europe/northern-europe/volvo/s80-2022
http://example.com/asia/pacific/south-korea/i20-2019
Removing Parent Slugs from Hierarchical Permalinks
The plugin is the easiest method to remove parent URLs from hierarchical permalinks without any PHP skills. Hierarchical post types, such as pages, and taxonomies, such as category, usually contain the parent and child categories/pages in their permalinks:
Hierarchical post type (pages):
http://example.com/%pagename%http://example.com/americas/
http://example.com/americas/north-america/
http://example.com/americas/north-america/canada/
Using the Permastructure, you may alter the permalink structure by removing parent slugs from hierarchical permalinks in order to get flatter URLs. The process is straightforward.
To do so, for hierarchical post types, use the "%pagename_flat%" tag for pages and "%custom-post-type-name_flat%" for custom post types.
Hierarchical post type (pages):
http://example.com/%pagename_flat%http://example.com/americas/
http://example.com/north-america/
http://example.com/canada/
For categories, use "%category_flat%" instead of "%category%". For other hierarchical taxonomies, substitute "%custom_taxonomy_name_flat%" for "%custom_taxonomy_name%".
Including Custom Fields in WordPress Permalinks
One really helpful feature of the plugin is the ability to automatically include custom fields in permalinks. As of right now, no other plugin provides this feature. This allows the permalinks of custom taxonomies and post types to have meta data added to them.
Custom post type ("product") permalink with custom field ("sku") included:
http://example.com/%product_cat%/%product%-%__sku%http://example.com/coffee/arabica/yirgachefe-85932643
http://example.com/coffee/robusta/borbone-45667890
