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.


If you want to exclude some 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' );

If you want to exclude permalink from any post type so, use custom_permalinks_exclude_post_type filter.

custom_permalinks_exclude_post_type 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.

Thanks for the Support!

The support from the users that love Custom Permalinks is huge. You can support Custom Permalinks’s future development and help to make it even better by donating or even giving a 5 star rating with a nice message to me 🙂

Donate to Custom Permalinks


  1. Unzip the package, and upload custom-permalinks to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Edit any post, page, tag or category to set a custom permalink.

عمومی سوالات

Installation Instructions
  1. Unzip the package, and upload custom-permalinks to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Edit any post, page, tag or category to set a custom permalink.


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.

تمام 73 جائزے پڑھیں

شراکت دار اور ڈیویلپرز

#8220;Custom Permalinks” اوپن سورس سافٹ ویئر ہے۔ مندرجہ ذیل لوگوں نے اس پلگ ان میں حصہ لیا:

شراکت دار

“Custom Permalinks” کا 5 زبانوں میں ترجمہ کیا گیا ہے۔ تعاون کے لیے مترجمین کا شکریہ۔

“Custom Permalinks” کا اپنی زبان میں ترجمہ کریں۔

ڈویلپمینٹ میں دلچسپی ہے؟

کوڈ براؤز کریں، ایس این وی ریپوزیٹری کو چیک کریں یا ڈویلپمینٹ لاگ کو سبسکرائب کریں بذریعہ آر ایس ایس۔

چینج لاگ


  • 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