Custom Permalinks · Version history
Custom Permalinks changelog and version history
- Latest version
- 3.3.3
- Oct 13, 2026 (26 days ago)
- Releases
- 108
- since 2008
- In the last year
- 6
- about one every 11 days
- Tested up to
- WordPress 7.1.4
- PHP 7.4 or later
Releases each year
- 20088 releases
- 20094 releases
- 20103 releases
- 201110 releases
- 20125 releases
- 20131 release
- 20143 releases
- 20152 releases
- 20167 releases
- 201718 releases
- 201817 releases
- 20192 releases
- 20205 releases
- 20215 releases
- 20221 release
- 20233 releases
- 20242 releases
- 20256 releases
- 20266 releases
20266 releases
Custom Permalinks 3.3.3Latest
- Bug:
- Fixed an infinite redirect loop on percent-encoded custom permalinks without a trailing slash (e.g. Japanese), a regression in 3.3.0.
Custom Permalinks 3.3.2
- Bug:
- Fixed custom permalinks in non-Latin scripts returning a 404 (e.g. Persian) when a shorter custom permalink matched the start of the URL (e.g. a product/ page for product/سلام/), a regression in 3.3.0.
- Fixed custom permalinks in non-Latin scripts not loading with an endpoint appended (e.g. /سلام/feed/).
Custom Permalinks 3.3.1
- Bug:
- Fixed the editor’s View Post and preview links not updating, or the wrong links being updated, after saving a custom permalink when the post’s previous URL contained characters such as ?, + or ( (e.g. ?p=123 for drafts).
- Hardened the editor script to only update links with an http(s) URL on the site’s own domain.
- Accessibility:
- Added labels for screen readers to the checkboxes in Post Types Permalinks and Taxonomies Permalinks, the structure fields in Post Types Settings, and the Custom Permalink field on category, tag, and term screens.
- Raised the text contrast of the structure tags in Post Types Settings and of the plugin descriptions on the About screen, and underlined links in its text.
Custom Permalinks 3.3.0
- Changes to be aware of:
- Requires WordPress 5.9 and PHP 7.4 or later, the oldest versions the plugin is now tested on. Sites on older versions keep 3.2.1.
- Translations now come from translate.wordpress.org instead of files bundled with the plugin. It covers every bundled language and adds Serbian. Sites that installed the plugin outside wordpress.org, or turned off automatic translation updates, show English until the language pack is installed from…
- WPML translations now always resolve to their own custom permalink. Previously they returned another language’s custom permalink depending on the active (admin) language, which listed wrong URLs in Post Types Permalinks and in SEO plugins’ indexables and XML sitemaps (e.g. Yoast SEO).
- %ctax_parents_TAXONOMY_NAME_name% now uses the parent terms’ names, as documented, instead of their slugs. Permalinks generated from now on change where a parent term’s name differs from its slug; saved permalinks are not changed.
- Redirects and URLs:
- Fixed custom permalinks in non-Latin scripts (e.g. Thai, Arabic, Cyrillic) returning a 404 or redirecting in an infinite loop, as the browser requests them percent-encoded while they are saved unencoded (or vice versa, depending on the site language).
- Fixed the trailing-slash redirect and the redirect to the custom permalink dropping the page number (e.g. /news/page/2 redirected to /news/ instead of /news/page/2/).
- Added the custom_permalinks_disable_remove_page_number filter to keep the /page/{number} segment in the requested URL, for custom archive pages whose pagination doesn’t advance.
- Fixed the query string being corrupted (e.g. foo=bar became http://foo=bar) after a custom permalink was resolved.
- Fixed comment links on paginated comments (e.g. /my-post/comment-page-2/) not following the custom permalink’s trailing slash, so a custom permalink without a trailing slash no longer gets comment URLs with one, and vice versa.
- WPML and Polylang:
- Fixed the WPML language switcher linking back to the current language instead of the translation when languages are in directories (e.g. /en/, /de/) and the translation uses the same custom permalink.
- Fixed WPML language directories that differ from the language code (e.g. /de-de/ for de, as in WPML 5.0) not being repaired when duplicated, and the default language getting its directory added to a permalink when “hide the default language directory” is on.
- Fixed English custom permalinks not being lowercased and cleaned of special characters with WPML 5.0’s region-based language codes (e.g. en-us).
- Fixed Polylang translations sharing the same custom permalink (e.g. /en/technology and /zh/technology) redirecting to the other language when the translation’s stored language was missing or out of date.
- Admin screens:
- Fixed Post Types and Taxonomies Permalinks pagination showing the first page’s results on every page, ignoring sorting and search, when a persistent object cache (e.g. Redis or Memcached) is enabled. The lists now also refresh right after a permalink is added, changed or deleted.
- Fixed bulk delete and search in Post Types and Taxonomies Permalinks failing with a “headers already sent” warning instead of redirecting.
- Fixed short titles and permalinks being padded with leading spaces in the Post Types and Taxonomies Permalinks lists.
- Fixed every post of a type showing and saving the same custom permalink when a theme or plugin runs a custom loop in the admin without resetting the global post.
- Fixed the original permalink showing as the custom permalink in the edit screen’s permalink box and in the block editor, and being compared against when saving a post or term.
- Fixed a fatal error on WordPress 5.9 and 6.0 when saving the Post Types Permalinks settings with the cache flush option, as wp_cache_flush_group() needs WordPress 6.1. Object caches that can’t flush a single group now get a full cache flush.
- Fixed the “Custom Permalinks Manager” role name not being translatable.
- Fixed Post Types Settings showing the WordPress address instead of the site address before each structure, which is wrong when WordPress is installed in a subdirectory.
- Compatibility:
- Fixed WooCommerce notices about accessing order data directly on order screens, as the permalink form read post fields from the WC_Order object.
- Fixed posts updated by WP All Import being handled as new posts, which turned permalink regeneration back on and could replace their custom permalink with the post type’s structure.
- Fixed the seems_utf8() deprecation notice on WordPress 6.9 and later.
- For the changelog of earlier versions, please refer to the separate changelog.txt file.
Custom Permalinks 3.2.1
Custom Permalinks 3.2.0
20256 releases
Custom Permalinks 3.1.2
Custom Permalinks 3.1.1
Custom Permalinks 3.1.0
Custom Permalinks 3.0.1
Custom Permalinks 3.0.0
Custom Permalinks 2.8.0
20242 releases
Custom Permalinks 2.7.0
Custom Permalinks 2.6.0
20233 releases
Custom Permalinks 2.5.2
Custom Permalinks 2.5.1
Custom Permalinks 2.5.0
20221 release
Custom Permalinks 2.4.0
20215 releases
Custom Permalinks 2.3.0
Custom Permalinks 2.2.0
Custom Permalinks 2.1.0
Custom Permalinks 2.0.1
Custom Permalinks 2.0.0
20205 releases
Custom Permalinks 1.7.1
Custom Permalinks 1.7.0
Custom Permalinks 1.6.2
Custom Permalinks 1.6.1
Custom Permalinks 1.6.0
20192 releases
Custom Permalinks 1.5.1
Custom Permalinks 1.5.0
201817 releases
Custom Permalinks 1.4.0
Custom Permalinks 1.3.0
Custom Permalinks 1.2.24
Custom Permalinks 1.2.23
Custom Permalinks 1.2.22
Custom Permalinks 1.2.21
Custom Permalinks 1.2.20
Custom Permalinks 1.2.19
Custom Permalinks 1.2.18
Custom Permalinks 1.2.17
Custom Permalinks 1.2.16
Custom Permalinks 1.2.15
Custom Permalinks 1.2.14
Custom Permalinks 1.2.12
Custom Permalinks 1.2.11
Custom Permalinks 1.2.10
Custom Permalinks 1.2.9
201718 releases
Custom Permalinks 1.2.8
Custom Permalinks 1.2.7
Custom Permalinks 1.2.6
Custom Permalinks 1.2.5
Custom Permalinks 1.2.4
Custom Permalinks 1.2.3
Custom Permalinks 1.2.2
Custom Permalinks 1.2.1
Custom Permalinks 1.2
Custom Permalinks 1.1
Custom Permalinks 1.0.2
Custom Permalinks 1.0.1
Custom Permalinks 1.0
Custom Permalinks 0.9.3
Custom Permalinks 0.9.2
Custom Permalinks 0.9.1
Custom Permalinks 0.9
Custom Permalinks 0.8
20167 releases
Custom Permalinks 0.7.28
Custom Permalinks 0.7.27
Custom Permalinks 0.7.26
Custom Permalinks 0.7.25
Custom Permalinks 0.7.24
Custom Permalinks 0.7.23
Custom Permalinks 0.7.22
20152 releases
Custom Permalinks 0.7.21
Custom Permalinks 0.7.20
20143 releases
Custom Permalinks 0.7.19
Custom Permalinks 0.7.18
Custom Permalinks 0.7.17
20131 release
Custom Permalinks 0.7.16
20125 releases
Custom Permalinks 0.7.15
Custom Permalinks 0.7.14
Custom Permalinks 0.7.13
Custom Permalinks 0.7.12
Custom Permalinks 0.7.11
201110 releases
Custom Permalinks 0.7.10
Custom Permalinks 0.7.9
Custom Permalinks 0.7.8
Custom Permalinks 0.7.7
Custom Permalinks 0.7.6
Custom Permalinks 0.7.4
Custom Permalinks 0.7.3
Custom Permalinks 0.7.2
Custom Permalinks 0.7.1
Custom Permalinks 0.7
20103 releases
Custom Permalinks 0.6.1
Custom Permalinks 0.6
Custom Permalinks 0.5.3
20094 releases
Custom Permalinks 0.5.2
Custom Permalinks 0.5.1
Custom Permalinks 0.5
Custom Permalinks 0.4.1
20088 releases
Custom Permalinks 0.4
Custom Permalinks 0.3.1
Custom Permalinks 0.3
Custom Permalinks 0.2.2
Custom Permalinks 0.2.1
Custom Permalinks 0.2
Custom Permalinks 0.1.1
Custom Permalinks 0.1
Questions about Custom Permalinks’s releases
What is the latest version of Custom Permalinks?
3.3.3, released on Oct 13, 2026 (3 weeks ago). It’s tested up to WordPress 7.1.4 and needs PHP 7.4 or later.
How often is Custom Permalinks updated?
6 releases in the last year, about one every 11 days. Its first release on WordPress.org dates from November 2008.
Know when your rivals ship
Track your plugin and its rivals: TrackWP sees each new release in the nightly snapshot and alerts you, with what it did to their rank.
Start freeRelease dates come from the day each version’s folder was made in Custom Permalinks’s WordPress.org SVN repository; the notes from its readme’s changelog, as its authors wrote it.