Custom Permalinks


Lay out your site the way you want it. Set the URL of any post, page, tag or category to anything you want.
Old permalinks will redirect properly to the new address. Custom Permalinks gives you ultimate control
over your site structure.

Be warned: This plugin is not a replacement for WordPress’s built-in permalink system. Check your WordPress
administration’s “Permalinks” settings page first, to make sure that this doesn’t already meet your needs.

This plugin is only useful for assigning custom permalinks for individual posts, pages, tags or categories.
It will not apply whole permalink structures, or automatically apply a category’s custom permalink to the posts
within that category.

If anyone wants the different Structure Tags for their Post types or use symbols in the URLs So, use the Permalinks Customizer which is a fork of this plugin and contains the enhancement of this plugin.


Plugin provides some filter which maybe used according to your needs.

To exclude any Permalink to processed with the plugin so, just add the filter looks like this:

function check_xml_sitemap_url( $permalink ) {
  if ( false !== strpos( $permalink, 'sitemap.xml' )) {
    return '__true';
add_filter( 'custom_permalinks_request_ignore', 'check_xml_sitemap_url' );

To exclude permalink from any post type so, just add the filter looks like this:

function yasglobal_exclude_post_types( $post_type ) {
  if ( $post_type == 'custompost' ) {
    return '__true';
  return '__false';
add_filter( 'custom_permalinks_exclude_post_type', 'yasglobal_exclude_post_types');

Note: custom_permalinks_exclude_post_type doesn’t work on the posts permalink which has been created previously.

To make the like query works as it was before so, just add this line in your theme’s functions.php:

add_filter( 'custom_permalinks_like_query', '__return_true');

Note: Use custom_permalinks_like_query filter if the URLs doesn’t works for you after upgrading to v1.2.9

Thanks for the Support

I does not always provide active support for the Custom Permalinks plugin on the forums, as i have prioritize the email support.
One-on-one email support is available to people who bought Custom Permalinks Premium only.

Bug reports

Bug reports for Custom Permalinks are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.


This process defines you the steps to follow either you are installing through WordPress or Manually from FTP.

From within WordPress

  1. Visit ‘Plugins > Add New’
  2. Search for Custom Permalinks
  3. Activate Custom Permalinks from your Plugins page.
  4. Go to “after activation” below.


  1. Upload the custom-permalinks folder to the /wp-content/plugins/ directory
  2. Activate Custom Permalinks through the ‘Plugins’ menu in WordPress
  3. Go to “after activation” below.


Installation Instructions

This process defines you the steps to follow either you are installing through WordPress or Manually from FTP.

From within WordPress

  1. Visit ‘Plugins > Add New’
  2. Search for Custom Permalinks
  3. Activate Custom Permalinks from your Plugins page.
  4. Go to “after activation” below.


  1. Upload the custom-permalinks folder to the /wp-content/plugins/ directory
  2. Activate Custom Permalinks through the ‘Plugins’ menu in WordPress
  3. Go to “after activation” below.


Great plugin!! Sets the categories you want!

Thank you for the wonderful plugin. It was exactly what we needed. Since we have a bunch of categories, the permalink structure wasn’t letting us select which categories we wanted in the permalink. This plugin saved the day and now we can override the ones that require certain categories.

Seamless and does the trick – Perfect!

I just needed to add extra path levels to the URL (e.g. instead of just and it does that effortlessly.

I was a bit worried about how this works in practice as it sounded a bit complicated in the blurb but it simply replaces the editable permalink field on the post / page and integrates seamlessly into my standard process.

Really happy with the plugin – Thanks!

404 for some tags, some tags works as random pages

I experienced big issue with this plugin and can’t recommend it to anyone.

1. Some tags (they was not added permalinks) started to show 404 page after activating the plugins
2. Some tags (they was not added as permalinks) started to show random post.

Read all 73 reviews

Contributors & Developers

“Custom Permalinks” is open source software. The following people have contributed to this plugin.


“Custom Permalinks” has been translated into 6 locales. Thank you to the translators for their contributions.

Translate “Custom Permalinks” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed pager issue


  • Fixed Redirect Issue of Child Pages


  • Enhancements
    • Added Filter to enable the like query
  • Bugs
    • PHP error displayed on all pages using custom permalinks
    • Removed LIKE Query in default. It only works if the site uses PolyLang,
      AMP Plugins or separately enabled using the provided filter.


  • Add Order by in request query


  • Fixed Parse Error


  • Enhancements
    • Added Filter to Exclude Post types
  • Bugs
    • Fixed Query Issue on parse_request
    • Resolving Issues with Cornerstone


  • Fixed Category/Tag Update Issue + Typo on Admin Page


  • Fixed Slug issue with Yoast SEO


  • Fixed PHP Notice on Edit Post Page


  • Fixed Typo of Class Object for term on Admin Page


  • Fixed Class Typo


  • Enhancements
    • Added Filter to Exclude/Ignore URL to be processed
    • Added Translation Capability
    • Split the Code using OOPS Concept to improve performance and applied the filters according to the need
    • Removed some unnecessary filters
  • Bugs
    • Fixed Vulnerability Issues


  • Enhancements

    • Added PostTypes Permalinks Page
      • View all the PostTypes permalinks
      • Search Permalinks
      • Sort by Title
      • Pagination
    • Added Categories Permalinks Page
      • View all the Category/Tags permalinks
      • Search Permalinks
      • Pagination
  • Bug Fixes

    • 404 Issues
    • Child pages bug


  • Fixed Notice and some URL Issues


  • Fixed issue with AMP Pages


  • Updated Query on the custom_permalinks_request Function


  • Fixed PolyLang Conflicts


  • Fixed WPML Conflicts


  • Fixed issues of Filters and Actions (Replaces ‘edit_files’ with 10)


  • Resolved the conflict with PolyLang Plugin


  • Fixed (Draft preview issue for custom post types + some PHP Warnings)


  • Fixed draft preview issue(posts + pages)


  • Fixed Loop Redirecting issue


  • Fixed PHP Notice issue


  • Fixed draft preview issue


  • Fixed a problem with page URLs


  • Fixed a problem with permalinks with “/” components


  • Fixed PHP warning
  • Fixed initial permalink display for new posts/pages


  • Minor internationalization fixes


  • Addressed a noisy warning
  • Revised addition of admin forms js (don’t use is_admin())
  • Updated Roles and Capabilities from depreciated numerical to label capabilities (by OF-6)
  • Added css/html to match WP 3.5+ layout (by OF-6)


  • WP 3.9 compatibility fix, thanks to Sowmedia


  • Patch to address 404 errors when displaying a page/post that shares a permalink with a trashed page/post, thanks to Tor Johnson


  • Patch to address SSL problems, thanks to Amin Mirzaee


  • Security and compatibility fixes by Hans-Michael Varbaek of Sense of Security


  • Permalinks are now case-insensitive (thanks to @ericmann)


  • Delete permalinks upon page/post deletion


  • Fixed issue with term permalinks not working properly on some installations


  • Fixed issue with feed URLs in non-webroot blog installations


  • Fixed issue with pending/draft posts with permalinks
  • Fixed infinite redirect issue with permalinks without trailing slash, on blogs not hosted in the webroot


  • Fix for 404 error on static front page with custom permalink set, by Eric TF Bat


  • Support for custom post types, by Balázs Németh


  • Support for non-ASCII characters in URLs
  • Fixed bug where adding a new tag when saving a post with a custom permalink attaches that permalink to the new tag
  • Some compatibility fixes for WP 3.2.1


  • Minor change to permalink saving routine to fix some possible issues
  • Fixed issue with %-encoded permalinks


  • Fixed permalink saving issue when not using “…/%postname%” or similar permalink structure


  • Fixed issue where changes to trailing “/” aren’t saved


  • Added support for changing post/page slug only
  • Fixed incorrect admin edit link


  • Fix problem with /page/# URLs on WP 3.1.3


  • Don’t clobber query parameters when redirecting to the custom permalink from the original URL


  • Compatiblity fix for last update


  • Added support for SSL sites, thanks to Dan from


  • Fix bug causing incorrect link from “View Post”/”View Page” button in post/page editor


  • Fix infinite redirect for permalinks ending in a / (critical fix)
  • Moved post/page permalinks settings to top of edit form, replacing prior permalink display


  • Fix for invalid URL redirect (eg. http://domain.comfolder/file.html instead of when using permalinks without a trailing slash (like …/%postname%.html)


  • Bugfix for matching posts when there are multiple posts that match parts of the query


  • Compatibility fix for WP 2.7’s tag/category pages


  • Support for WordPress sites in subdirectories (i.e., not located at the webroot)


  • WP 2.7 compatability fixes; fix for bug encountered when publishing a draft, or reverting to draft status, and fix for placeholder permalink value for pages


  • Support for pages, and a fix for draft posts/pages


  • Discovered a typo that broke categories


  • Largely rewritten to provide more robust handling of trailing slashes, proper support for trailing URL components (eg. paging)


  • Fixed bug with not matching permalinks when / appended to the URL, and workaround for infinite redirect when another plugin is enforcing trailing /


  • Better handling of trailing slashes


  • Added ‘Custom Permalinks’ section under ‘Manage’ to show existing custom permalinks, and allow reverting to the defaults


  • Fixed bug with categories