Permalink Manager supports many popular WordPress plugins. For a few, you will need to add an additional snippet to your site to get the most out of this plugin.
Please note that the list is not exhaustive and is continually being extended. The WordPress.org plugin directory now has around 60.000 plugins. The absence of a plugin from the list does not always indicate that it will not function with Permalink Manager.
Forum/community plugins
bbPress
The free version of the plugin allows you to alter the permalinks for Forums, Topics, and Replies. To change Topic Tags permalinks, you will need the paid version (Permalink Manager Pro).
Buddypress
Unfortunately, Permalink Manager does not support Buddypress at this moment.
Asgaros Forum
To detect the URL addresses of the forums and subforums, Asgaros Forum uses a specific approach. The issue is that it may conflict with the Permalink Manager functions that identify custom permalinks. To ensure that both plugins work smoothly together please pick "Forum" page in Asgaros Forum plugin settings.

Additionally, please copy and paste the following snippet into functions.php in the (child) theme directory.
function pm_stop_redirect_forum() {
	global $wp_query;
	$wp_query->query_vars['do_not_redirect'] = 1;
}
add_action('asgarosforum_prepare', 'pm_stop_redirect_forum');
Directory plugins & themes
MyListing
Permalink Manager integrates with the MyListing theme, allowing you to configure custom permalink structures for all custom post types and taxonomies registered by the theme. You can also override permalinks for individual items as needed.
This includes single listings (
job_listing
) and all taxonomies used by MyListing, such as listing categories, tags, regions, and any custom taxonomies created through the theme's taxonomy settings.
When editing the permalink structure for listings, you can include extra tags associated with the "listing" post type, such as related taxonomy slugs and custom field values.
| Permastructure tag(s) | Replaced with |
|---|---|
%listing-type%
or
%listing_type%
| The listing type's name. |
%listing-type-slug%
or
%listing_type_slug%
| The raw listing type slug. |
%listing-location%
or
%listing_location%
| The listing's location. |
%listing-region%
or
%listing_region%
| The full slug of the listing's assigned
region
term (with its parent terms included). |
%listing-category%
or
%listing_category%
| The full slug of the listing's assigned
job_listing_category
term (with its parent terms included). |
Both hyphenated and underscored variants of each tag are accepted, so
%listing-type%
and
%listing_type%
behave identically.
Custom Landing Page & Taxonomy Permalinks
By default, when a user opens a taxonomy page from an archive page, MyListing uses the standard Explore page. To give you more control, MyListing lets you assign a Custom Landing Page to any individual taxonomy term, so visitors are sent directly to the landing page you choose.
This option is available for listing categories, regions, tags, and custom taxonomies. The assigned pages can be edited with Elementor, the WordPress Block Editor, or another page builder.
Please note that MyListing still uses a redirect between the archive URL and the landing page. This redirect can add loading time and affect the browsing experience.
If you would prefer to avoid this redirect and instead rewrite the term's original URL to point directly to the custom landing page's permalink, you can do so with a simple code snippet (no additional plugin is required).
/**
* Point MyListing taxonomy terms that have a custom "Landing Page" assigned
* directly to that page, avoiding the theme's extra 301 redirect.
*/
add_filter( 'term_link', function( $term_link, $term, $taxonomy ) {
	// Limit this to the taxonomies registered by the MyListing theme
	$ml_taxonomies = array( 'job_listing_category', 'region', 'case27_job_listing_tags' );
	if ( function_exists( 'mylisting_custom_taxonomies' ) ) {
		$ml_taxonomies = array_merge( $ml_taxonomies, array_keys( mylisting_custom_taxonomies() ) );
	}
	if ( ! in_array( $taxonomy, $ml_taxonomies, true ) ) {
		return $term_link;
	}
	// Read the landing page assigned to the term (same meta key MyListing uses)
	$landing_page_id = get_term_meta( $term->term_id, '_landing_page', true );
	if ( $landing_page_id && is_numeric( $landing_page_id ) ) {
		$landing_page_url = get_permalink( absint( $landing_page_id ) );
		if ( ! empty( $landing_page_url ) ) {
			return $landing_page_url;
		}
	}
	return $term_link;
}, 10, 3 );
GeoDirectory
Permalink Manager may be used to customize the permalinks of any GeoDirectory-controlled custom post types (including "Places").

Default category support
Please put the below PHP code snippet into functions.php in the child theme directory to make Permalink Manager respect the "default category" selection inside the custom permalinks of "Place" post type.
/**
* Support primary term selected with GeoDirectory plugin (https://wpgeodirectory.com/)
*/
function pm_geodirectory_primary_term( $replacement_term, $post, $terms, $taxonomy, $native_uri ) {
	if ( ! $native_uri && ! empty( $post->post_type ) && $post->post_type == 'gd_place' ) {
		$gd_post = geodir_get_post_info( $post->ID );
		if ( ! empty( $gd_post->default_category ) ) {
			$primary_term = get_term( $gd_post->default_category, 'gd_placecategory' );
		}
	}
	return ( ! empty( $primary_term->taxonomy ) ) ? $primary_term : $replacement_term;
}
add_filter( 'permalink_manager_filter_post_terms', 'pm_geodirectory_primary_term', 10, 5 );
WP Job Manager
The free version of the plugin supports the permalinks of Job Listing items. Editing URLs of Job Types and other user-defined custom taxonomies is available with Permalink Manager Pro.
Dokan
Using an extra code snippet you can make Permalink Manager include store/vendor name in WooCommerce product permalinks. To take benefit of the snippet, you will need to paste it to functions.php file in your (child) theme directory. This would allow Permalink Manager to identify a new permastructure tag (%store%) for new product permalinks.
If you need to exclude the Dokan dashboard page from the Permalink Manager URI functions, a second code snippet is provided below. This code may be useful if Permalink Manager does not recognize the URLs of Dokan's dashboard sections.
/**
* Use %store% in Products' permastructure settings
*/
function pm_dokan_store_field($default_uri, $native_slug, $post, $slug, $native_uri) {
	// Do not affect native URIs
	if($native_uri == true || empty($post->post_type) || $post->post_type !== 'product') { return $default_uri; }
	if(strpos($default_uri, '%store%') !== false) {
		$store_name = get_user_meta($post->post_author, 'dokan_store_name', true);
		$default_uri = str_replace('%store%', sanitize_title($store_name), $default_uri);
	}
	return $default_uri;
}
add_filter('permalink_manager_filter_default_post_uri', 'pm_dokan_store_field', 3, 5);
/**
* Disallow Permalink Manager URI functions for Dokan dashboard
*/
function pm_exclude_dokan_dashboard($ids) {
	// Check if Dokan is activated
	if(function_exists('dokan_get_option')) {
		// Get Dokan dashboard page id
		$ids[] = dokan_get_option('dashboard', 'dokan_pages');
	}
return $ids;
}
add_filter('permalink_manager_excluded_post_ids', 'pm_exclude_dokan_dashboard');

Other WordPress plugins
BasePress
In order for Permalink Manager to support BasePress permalinks, the query parameters must be modified. You may accomplish this by using the code snippet below.
/**
* Support "Knowledgebase category" permalinks
*/
function pm_fix_basepress_query($query, $old_query, $uri_parts, $pm_query, $content_type) {
	global $basepress_utils ;
	if(!empty($pm_query['id']) && !empty($query['knowledgebase_cat'])) {
		$kb_category = $query['knowledgebase_cat'];
		$query = array(
			'post_type' => 'knowledgebase',
			'knowledgebase_items' => $kb_category
		);
		add_filter('basepress_canonical_redirect', '__return_false');
	}
	return $query;
}
add_filter('permalink_manager_filter_query', 'pm_fix_basepress_query', 3, 5);
WP All Export
The WP Export plugin works in combination with Permalink Manager and allows you to include custom permalinks in your export dump. This can be useful if you want to bulk edit the data, for example using Excel.
To add the custom permalinks, simply drag the "Custom URI" field title displayed in the "Permalink Manager" section to the list of exported fields.

WP All Import
Using WP All Import to import posts, pages, custom post type items, or products can be made easier with the help of Permalink Manager. When importing, the plugin can be used to either import custom permalinks or automatically generate them.
In order to import a custom permalink from an imported file, you must first drag the row containing the desired value from the left sidebar into the field in the metabox labeled "Permalink Manager". If this field is left blank, then Permalink Manager will automatically generate a new custom permalink based on your current settings for Permastructure.
This means that instead of using a complete URL (e.g. https://example.com/business/softly-t-shirt), you should use just the URI (e.g business/softly-t-shirt).
If this step is not followed correctly, Permalink Manager will not be able to process and import the field value correctly.

Custom Permalinks
If you are switching from the "Custom Permalinks" plugin, Permalink Manager Pro has a built-in tool to migrate your existing URLs. You can find the it in the plugin settings under the Tools tab.
Learning Management System
Tutor LMS
Unlike the built-in hierarchical 'page' post type, 'courses' and 'lesson' are separate post types which are not linked together through '$post->parent'. This means that the %courses% tag will not be recognized by Permalink Manager as is.
In order to enable the use of the %courses% tag for the "lessons" and "quiz" post types in the Permastructure settings, an additional PHP code snippet is required:
/**
* Support %courses% tag (Sensei/Tutor LMS)
*/
function pm_replace_courses_tag( $default_uri, $native_slug, $post, $slug, $native_uri ) {
	// Do not affect native URIs or different post types
	if ( $native_uri || empty( $post->post_type ) || ! in_array( $post->post_type, array( 'lesson', 'tutor_quiz', 'tutor_assignments' ) ) ) {
		return $default_uri;
	}
	if ( strpos( $default_uri, '%courses%' ) !== false && function_exists( 'tutor_utils' ) ) {
		$course_id = tutor_utils()->get_course_id_by_subcontent( $post->ID );
		$course_title = ( ! empty( $course_id ) ) ? get_the_title( $course_id ) : '';
		$default_uri = str_replace( '%courses%', sanitize_title( $course_title ), $default_uri );
	}
	return $default_uri;
}
add_filter( 'permalink_manager_filter_default_post_uri', 'pm_replace_courses_tag', 3, 5 );
LearnPress
To avoid the redirect loop on LearnPress dedicated pages, please use the code snippet below.
/**
* Excluding the LearnPress pages from Permalink Manager
*/
function pm_exclude_learnpress_pages( $excluded_ids ) {
	if ( is_array( $excluded_ids ) && function_exists( 'learn_press_get_page_id' ) ) {
		$learnpress_pages = array( 'profile', 'courses', 'checkout', 'become_a_teacher' );
		foreach ( $learnpress_pages as $page ) {
			$excluded_ids[] = learn_press_get_page_id( $page );
		}
	}
	return $excluded_ids;
}
add_filter( 'permalink_manager_excluded_post_ids', 'pm_exclude_learnpress_pages' );
/**
* Disable canonical redirect if LearnPress query variables are detected
*/
function pm_fix_learnpress_wp_query( $query, $old_query ) {
	if ( ! empty( $old_query['view'] ) && ! empty( $old_query['page_id'] ) ) {
		$query['do_not_redirect'] = 1;
	}
	return $query;
}
add_filter( 'permalink_manager_filter_query', 'pm_fix_learnpress_wp_query', 3, 2 );
LearnDash
Permalink Manager currently does not support LearnDash out of the box. LearnDash is partially supported in Permalink Manager with a custom code snippet, however we can not guarantee full compatibility due to the complicated interactions between both plugins.
Themes
Enfold theme



