Permalink Manager works flawlessly in majority of user scenarios. However, there are several common plugin issues that are outlined below.
The Permalink Manager codebase was optimized to avoid the performance issues. To reduce the number of SQL queries, the plugin saves all the custom permalinks in a single serialized array. The main reason for this is that the operations on arrays are generally quicker if they are made directly via PHP.
How Is the Permalink Manager Data Stored?
Custom URIs, redirects, permastructures, and plugin settings are serialized and saved in the wp_options database table in order to improve the performance of the website. This storage architecture is suitable for the majority of user scenarios, however it may not be effective if your website has thousands of posts or pages. Please see this post for further information about the plugin's performance.
Custom permalinks and redirects can be accessed as global variables to make advantage of the unique algorithm that allows Permalink Manager to detect content element when a particular URL is requested.
global $permalink_manager_uris, $permalink_manager_redirects;
If necessary, you may preview all of the data by using the "Debug" section.
The Storage Model of Permalink Manager and Its Impact on URL Customization
Permalink Manager allows you to easily update and manage custom permalinks on your WordPress website. Each custom permalink is assigned to a single post or term (category) by their IDs and stored in an array. It supports two types of content: posts, pages & custom content types such as WooCommerce products AND post tags, categories, and other custom taxonomies such as product categories.
As previously mentioned, while the plugin allows you to change existing permalinks to almost anything you desire, it does have a few limitations.
-
One of the primary limitations is that, given that all custom permalinks are stored statically in an array, you cannot define multiple canonical permalinks for the same page or term. This limitation is in place to decrease server resource consumption and improve processing time.
-
Another limitation is that it is not possible to create custom permalinks for non-existent combinations of categories. For example, it is not possible to create a new archive page that would list all products that match BOTH product category: "shoes" and product tag: "leather" as such combination does not exist anywhere in the database.
It's important to understand that the inability to create custom permalinks for combinations of categories is not a limitation of Permalink Manager, but rather a limitation of WordPress itself. There is no way to customize such a combination in the same manner that you can adjust individual categories and tags. Even the possibility of defining a title for such a combination is not available anywhere inside the WordPress dashboard.
In other words, if an archive page (for example, a product category or term) already exists, you may alter its URL using Permalink Manager, but if it does not exist you cannot build it by combining different archive pages.
-
Another limitation is that when a URL is opened and Permalink Manager parses it to determine which page it belongs to, the plugin ignores the $_GET variables (query parameters). As a result, you may not use the Permalink Manager plugin to rewrite the query parameters.
This means that it is not possible to format URLs with query parameters in order to convert them into pretty permalinks. This is because, as previously stated, a page may only have one static custom permalink.
Custom permalinks cannot be defined for dynamically generated URLs (with query parameters):
https://shop.com/location/?
state=new-jersey&city=newark↓
https://shop.com/location/
new-jersey/newarkAdditionally, it is not possible to construct a custom permalink format using Permastructures that include query parameters in the URL. Because of this, all non-alphanumeric characters, like question marks and ampersands, will be automatically removed from the custom permalink's (canonical URLs).
In custom permalinks, you cannot use query parameters:
https://shop.com/clothes/shirts?
filter_material=wool&filter_color=blue
Performance Limitations
The plugin works perfectly fine with small and medium sized websites and WooCommerce stores. It means that you can use it to rewrite hundreds and even dozens of thousands of custom permalinks without any hassle.
However, if you would like to use it to rewrite more than 60.000-80.000 permalinks, you might experience a slight slowdown. Another problem that can arise is a MySQL error (Got packet bigger than "max_allowed_packet" bytes...) generated when the total size of the custom permalinks array is bigger than the value of the "max_allowed_packet" variable.
Please also keep in mind that some hosting providers automatically remove the large database records stored in the 'wp_options' table. For instance, WPEngine could erase the custom permalinks array if its size is larger than 1MB (approx. 10.000-15.000 custom permalinks).