Permalink Manager Lite - Version 2.2.19.3.1

Version Description

Download this release

Release Info

Developer mbis
Plugin Icon 128x128 Permalink Manager Lite
Version 2.2.19.3.1
Comparing to
See all releases

Code changes from version 2.2.18 to 2.2.19.3.1

README.txt CHANGED
@@ -1,4 +1,4 @@
1
- === Permalink Manager Lite ===
2
  Contributors: mbis
3
  Donate link: https://www.paypal.me/Bismit
4
  License: GPLv2
@@ -6,8 +6,8 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
6
  Tags: permalinks, custom permalinks, permalink, woocommerce permalinks, url editor
7
  Requires at least: 4.4.0
8
  Requires PHP: 5.4
9
- Tested up to: 6.0
10
- Stable tag: 2.2.18
11
 
12
  Permalink Manager lets you customize the complete URL addresses of your posts, pages, custom post types, terms, and WooCommerce links with ease without touching any core files.
13
 
@@ -95,6 +95,26 @@ It is because Permalink Manager overwrites one of the core Wordpress functionali
95
 
96
  == Changelog ==
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  = 2.2.18 (May 18, 2022) =
99
  * Fix - The "permalink_manager_filter_permastructure" filter can now also be used before the "Permastructure" settings are saved in the database
100
  * Enhancement - Improved support for RankMath breadcrumbs
1
+ === Permalink Manager Pro ===
2
  Contributors: mbis
3
  Donate link: https://www.paypal.me/Bismit
4
  License: GPLv2
6
  Tags: permalinks, custom permalinks, permalink, woocommerce permalinks, url editor
7
  Requires at least: 4.4.0
8
  Requires PHP: 5.4
9
+ Tested up to: 6.0.1
10
+ Stable tag: 2.2.19.3.1
11
 
12
  Permalink Manager lets you customize the complete URL addresses of your posts, pages, custom post types, terms, and WooCommerce links with ease without touching any core files.
13
 
95
 
96
  == Changelog ==
97
 
98
+ = 2.2.19.4 (August 16, 2022) =
99
+ * Fix - The URLs with duplicated slashes (eg. example.com/sample-page////) are now handled correctly and forwarded to the canonical URL.
100
+
101
+ = 2.2.19.3 (August 11, 2022) =
102
+ * Dev - New filter added - 'permalink_manager_pre_sanitize_title'
103
+ * Fix - The old slugs are saved in the '_wp_old_slug' meta key even if the native slugs are changed in the URI Editor in the Gutenberg mode.
104
+ * Fix - Extra security check in the "Debug" section to prevent unauthorized users (CSRF) from removing the plugin's data.
105
+
106
+ = 2.2.19.2 (July 8, 2022) =
107
+ * Fix - JS conflict fixed ("Cannot read properties of null (reading 'isSavingMetaBoxes')")
108
+
109
+ = 2.2.19.1 (June 27, 2022) =
110
+ * Fix - JS conflict fixed ("Cannot read property 'isSavingPost' of null")
111
+
112
+ = 2.2.19 (June 27, 2022) =
113
+ * Fix - The term custom permalink is now returned in the correct language
114
+ * Fix - In Gutenberg mode, the custom permalinks are saved correctly and are not changed back to the default format ("URI Editor" is now only reloaded once the post has been saved and the metaboxes have been refreshed)
115
+ * Enhancement - Old URIs are saved as "extra redirects" if content is updated with WP All Import
116
+ * Dev - Additional minor improvements in code (including changes to make it work with PHP 8.1)
117
+
118
  = 2.2.18 (May 18, 2022) =
119
  * Fix - The "permalink_manager_filter_permastructure" filter can now also be used before the "Permastructure" settings are saved in the database
120
  * Enhancement - Improved support for RankMath breadcrumbs
includes/core/permalink-manager-actions.php CHANGED
@@ -10,9 +10,10 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
10
 
11
  // Ajax-based functions
12
  if(is_admin()) {
13
- add_action('wp_ajax_pm_bulk_tools', array($this, 'pm_bulk_tools'));
14
- add_action('wp_ajax_pm_save_permalink', array($this, 'pm_save_permalink'));
15
- add_action('wp_ajax_pm_detect_duplicates', array($this, 'ajax_detect_duplicates') );
 
16
  }
17
 
18
  add_action('clean_permalinks_event', array($this, 'clean_permalinks_hook'));
@@ -108,7 +109,7 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
108
  /**
109
  * Trigger bulk tools via AJAX
110
  */
111
- function pm_bulk_tools() {
112
  global $sitepress, $wp_filter, $wpdb;
113
 
114
  // Define variables
@@ -153,8 +154,8 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
153
  // Hotfix for WPML (start)
154
  if($sitepress) {
155
  remove_filter('get_terms_args', array($sitepress, 'get_terms_args_filter'), 10);
156
- remove_filter('get_term', array($sitepress, 'get_term_adjust_id'), 1);
157
- remove_filter('terms_clauses', array($sitepress, 'terms_clauses'), 10);
158
  remove_filter('get_pages', array($sitepress, 'get_pages_adjust_ids'), 1);
159
  }
160
 
@@ -243,8 +244,8 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
243
  // Hotfix for WPML (end)
244
  if($sitepress) {
245
  add_filter('terms_clauses', array($sitepress, 'terms_clauses'), 10, 4);
246
- add_filter('get_term', array($sitepress, 'get_term_adjust_id'), 1, 1);
247
- add_filter('get_terms_args', array($sitepress, 'get_terms_args_filter'), 10, 2);
248
  add_filter('get_pages', array($sitepress, 'get_pages_adjust_ids'), 1, 2);
249
  }
250
  }
@@ -256,7 +257,7 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
256
  /**
257
  * Save permalink via AJAX
258
  */
259
- public function pm_save_permalink() {
260
  $element_id = (!empty($_POST['permalink-manager-edit-uri-element-id'])) ? sanitize_text_field($_POST['permalink-manager-edit-uri-element-id']) : '';
261
 
262
  if(!empty($element_id) && is_numeric($element_id)) {
@@ -412,6 +413,13 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
412
  $permalink_manager_before_sections_html .= Permalink_Manager_Admin_Functions::get_alert_message(__( 'You are not allowed to remove Permalink Manager data!', 'permalink-manager' ), 'error updated_slugs');
413
  }
414
 
 
 
 
 
 
 
 
415
  switch($field_name) {
416
  case 'uris' :
417
  $option_name = 'permalink-manager-uris';
@@ -675,6 +683,22 @@ class Permalink_Manager_Actions extends Permalink_Manager_Class {
675
  die();
676
  }
677
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
  /**
679
  * Clear sitemaps cache
680
  */
10
 
11
  // Ajax-based functions
12
  if(is_admin()) {
13
+ add_action('wp_ajax_pm_bulk_tools', array($this, 'ajax_bulk_tools'));
14
+ add_action('wp_ajax_pm_save_permalink', array($this, 'ajax_save_permalink'));
15
+ add_action('wp_ajax_pm_detect_duplicates', array($this, 'ajax_detect_duplicates'));
16
+ add_action('wp_ajax_pm_dismissed_notice_handler', array($this, 'ajax_hide_global_notice'));
17
  }
18
 
19
  add_action('clean_permalinks_event', array($this, 'clean_permalinks_hook'));
109
  /**
110
  * Trigger bulk tools via AJAX
111
  */
112
+ function ajax_bulk_tools() {
113
  global $sitepress, $wp_filter, $wpdb;
114
 
115
  // Define variables
154
  // Hotfix for WPML (start)
155
  if($sitepress) {
156
  remove_filter('get_terms_args', array($sitepress, 'get_terms_args_filter'), 10);
157
+ remove_filter('get_term', array($sitepress, 'get_term_adjust_id'), 1);
158
+ remove_filter('terms_clauses', array($sitepress, 'terms_clauses'), 10);
159
  remove_filter('get_pages', array($sitepress, 'get_pages_adjust_ids'), 1);
160
  }
161
 
244
  // Hotfix for WPML (end)
245
  if($sitepress) {
246
  add_filter('terms_clauses', array($sitepress, 'terms_clauses'), 10, 4);
247
+ add_filter('get_term', array($sitepress, 'get_term_adjust_id'), 1, 1);
248
+ add_filter('get_terms_args', array($sitepress, 'get_terms_args_filter'), 10, 2);
249
  add_filter('get_pages', array($sitepress, 'get_pages_adjust_ids'), 1, 2);
250
  }
251
  }
257
  /**
258
  * Save permalink via AJAX
259
  */
260
+ public function ajax_save_permalink() {
261
  $element_id = (!empty($_POST['permalink-manager-edit-uri-element-id'])) ? sanitize_text_field($_POST['permalink-manager-edit-uri-element-id']) : '';
262
 
263
  if(!empty($element_id) && is_numeric($element_id)) {
413
  $permalink_manager_before_sections_html .= Permalink_Manager_Admin_Functions::get_alert_message(__( 'You are not allowed to remove Permalink Manager data!', 'permalink-manager' ), 'error updated_slugs');
414
  }
415
 
416
+ // Check if the nonce field is correct
417
+ $nonce = sanitize_key($_GET['_wpnonce']);
418
+ if(!wp_verify_nonce($nonce, 'permalink-manager')) {
419
+ $permalink_manager_before_sections_html .= Permalink_Manager_Admin_Functions::get_alert_message(__( 'You are not allowed to remove Permalink Manager data!', 'permalink-manager' ), 'error updated_slugs');
420
+ return;
421
+ }
422
+
423
  switch($field_name) {
424
  case 'uris' :
425
  $option_name = 'permalink-manager-uris';
683
  die();
684
  }
685
 
686
+ /**
687
+ * Hide global notices (AJAX)
688
+ */
689
+ function ajax_hide_global_notice() {
690
+ global $permalink_manager_alerts;
691
+
692
+ // Get the ID of the alert
693
+ $alert_id = (!empty($_REQUEST['alert_id'])) ? sanitize_title($_REQUEST['alert_id']) : "";
694
+ if(!empty($permalink_manager_alerts[$alert_id])) {
695
+ $dismissed_transient_name = sprintf('permalink-manager-notice_%s', $alert_id);
696
+ $dismissed_time = (!empty($permalink_manager_alerts[$alert_id]['dismissed_time'])) ? (int) $permalink_manager_alerts[$alert_id]['dismissed_time'] : DAY_IN_SECONDS;
697
+
698
+ set_transient($dismissed_transient_name, 1, $dismissed_time);
699
+ }
700
+ }
701
+
702
  /**
703
  * Clear sitemaps cache
704
  */
includes/core/permalink-manager-admin-functions.php CHANGED
@@ -15,7 +15,6 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
15
 
16
  add_action( 'admin_notices', array($this, 'display_plugin_notices'));
17
  add_action( 'admin_notices', array($this, 'display_global_notices'));
18
- add_action( 'wp_ajax_dismissed_notice_handler', array($this, 'hide_global_notice') );
19
 
20
  add_filter( 'default_hidden_columns', array($this, 'quick_edit_hide_column'), 99, 2 );
21
  }
@@ -93,7 +92,7 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
93
  }
94
 
95
  // Check if current admin page is related to taxonomies
96
- if(substr($this->active_subsection, 0, 4) == 'tax_') {
97
  $current_admin_tax = substr($this->active_subsection, 4, strlen($this->active_subsection));
98
  } else {
99
  $current_admin_tax = false;
@@ -1036,10 +1035,11 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
1036
  $html = "";
1037
  if(!empty($permalink_manager_alerts) && is_array($permalink_manager_alerts)) {
1038
  foreach($permalink_manager_alerts as $alert_id => $alert) {
1039
- if(!empty($alert['show'])) {
1040
- // Hide notice in Permalink Manager Pro
1041
- if(defined('PERMALINK_MANAGER_PRO') && $alert['show'] == 'pro_hide') { continue; }
1042
 
 
 
1043
  // Display the notice only on the plugin pages
1044
  if(empty($active_section) && !empty($alert['plugin_only'])) { continue; }
1045
 
@@ -1054,21 +1054,6 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
1054
  echo $html;
1055
  }
1056
 
1057
- /**
1058
- * Hide global notices (AJAX)
1059
- */
1060
- function hide_global_notice() {
1061
- global $permalink_manager_alerts;
1062
-
1063
- // Get the ID of the alert
1064
- $alert_id = (!empty($_REQUEST['alert_id'])) ? sanitize_title($_REQUEST['alert_id']) : "";
1065
- if(!empty($permalink_manager_alerts[$alert_id])) {
1066
- $permalink_manager_alerts[$alert_id]['show'] = 0;
1067
- }
1068
-
1069
- update_option( 'permalink-manager-alerts', $permalink_manager_alerts);
1070
- }
1071
-
1072
  /**
1073
  * Display notices generated by Permalink Manager tools
1074
  */
@@ -1092,7 +1077,7 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
1092
  if(class_exists('Permalink_Manager_Pro_Functions')) {
1093
  $exp_date = Permalink_Manager_Pro_Functions::get_expiration_date(true);
1094
 
1095
- $is_pro = ($exp_date > 1) ? false : true;
1096
  } else {
1097
  $is_pro = false;
1098
  }
15
 
16
  add_action( 'admin_notices', array($this, 'display_plugin_notices'));
17
  add_action( 'admin_notices', array($this, 'display_global_notices'));
 
18
 
19
  add_filter( 'default_hidden_columns', array($this, 'quick_edit_hide_column'), 99, 2 );
20
  }
92
  }
93
 
94
  // Check if current admin page is related to taxonomies
95
+ if(!empty($this->active_subsection) && substr($this->active_subsection, 0, 4) == 'tax_') {
96
  $current_admin_tax = substr($this->active_subsection, 4, strlen($this->active_subsection));
97
  } else {
98
  $current_admin_tax = false;
1035
  $html = "";
1036
  if(!empty($permalink_manager_alerts) && is_array($permalink_manager_alerts)) {
1037
  foreach($permalink_manager_alerts as $alert_id => $alert) {
1038
+ $dismissed_transient_name = sprintf('permalink-manager-notice_%s', sanitize_title($alert_id));
1039
+ $dismissed = get_transient($dismissed_transient_name);
 
1040
 
1041
+ // Check if alert was dismissed
1042
+ if(empty($dismissed)) {
1043
  // Display the notice only on the plugin pages
1044
  if(empty($active_section) && !empty($alert['plugin_only'])) { continue; }
1045
 
1054
  echo $html;
1055
  }
1056
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1057
  /**
1058
  * Display notices generated by Permalink Manager tools
1059
  */
1077
  if(class_exists('Permalink_Manager_Pro_Functions')) {
1078
  $exp_date = Permalink_Manager_Pro_Functions::get_expiration_date(true);
1079
 
1080
+ $is_pro = ($exp_date > 2) ? false : true;
1081
  } else {
1082
  $is_pro = false;
1083
  }
includes/core/permalink-manager-core-functions.php CHANGED
@@ -714,7 +714,7 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
714
  /**
715
  * 3. Prevent redirect loop
716
  */
717
- if(!empty($correct_permalink) && is_string($correct_permalink) && !empty($wp->request) && !empty($redirect_type) && $redirect_type !== 'slash_redirect') {
718
  $current_uri = trim($wp->request, "/");
719
  $redirect_uri = trim(parse_url($correct_permalink, PHP_URL_PATH), "/");
720
 
@@ -811,7 +811,7 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
811
  $rel_old_uri = wp_make_link_relative($old_uri);
812
  $rel_correct_permalink = wp_make_link_relative($correct_permalink);
813
 
814
- if($redirect_type !== 'www_redirect' && $rel_old_uri !== $rel_correct_permalink) {
815
  wp_safe_redirect($correct_permalink, $redirect_mode, PERMALINK_MANAGER_PLUGIN_NAME);
816
  exit();
817
  }
714
  /**
715
  * 3. Prevent redirect loop
716
  */
717
+ if(!empty($correct_permalink) && is_string($correct_permalink) && !empty($wp->request) && !empty($redirect_type) && !in_array($redirect_type, array('slash_redirect', 'duplicated_slash_redirect'))) {
718
  $current_uri = trim($wp->request, "/");
719
  $redirect_uri = trim(parse_url($correct_permalink, PHP_URL_PATH), "/");
720
 
811
  $rel_old_uri = wp_make_link_relative($old_uri);
812
  $rel_correct_permalink = wp_make_link_relative($correct_permalink);
813
 
814
+ if($redirect_type === 'www_redirect' || $rel_old_uri !== $rel_correct_permalink) {
815
  wp_safe_redirect($correct_permalink, $redirect_mode, PERMALINK_MANAGER_PLUGIN_NAME);
816
  exit();
817
  }
includes/core/permalink-manager-helper-functions.php CHANGED
@@ -546,6 +546,9 @@ class Permalink_Manager_Helper_Functions extends Permalink_Manager_Class {
546
  $sanitize_slugs = (!empty($permalink_manager_options['general']['disable_slug_sanitization'])) ? false : true;
547
  }
548
 
 
 
 
549
  // Remove accents & entities
550
  $clean = (empty($permalink_manager_options['general']['keep_accents'])) ? remove_accents($str) : $str;
551
  $clean = str_replace(array('&lt', '&gt', '&amp'), '', $clean);
@@ -597,8 +600,9 @@ class Permalink_Manager_Helper_Functions extends Permalink_Manager_Class {
597
  }
598
  $default_uri = implode("/", $chunks);
599
 
600
- $empty_tag_replacement = apply_filters('permalink_manager_empty_tag_replacement', null, $element);
601
- $default_uri = ($empty_tag_replacement || is_null($empty_tag_replacement)) ? str_replace("//", "/", preg_replace("/%(.+?)%/", $empty_tag_replacement, $default_uri)) : $default_uri;
 
602
 
603
  return trim($default_uri, "/");
604
  }
546
  $sanitize_slugs = (!empty($permalink_manager_options['general']['disable_slug_sanitization'])) ? false : true;
547
  }
548
 
549
+ // Allow to filter the slug before it is sanitized
550
+ $str = apply_filters('permalink_manager_pre_sanitize_title', $str, $keep_percent_sign, $force_lowercase, $sanitize_slugs);
551
+
552
  // Remove accents & entities
553
  $clean = (empty($permalink_manager_options['general']['keep_accents'])) ? remove_accents($str) : $str;
554
  $clean = str_replace(array('&lt', '&gt', '&amp'), '', $clean);
600
  }
601
  $default_uri = implode("/", $chunks);
602
 
603
+ $empty_tag_replacement = apply_filters('permalink_manager_empty_tag_replacement', '', $element);
604
+ $default_uri = preg_replace("/%(.+?)%/", $empty_tag_replacement, $default_uri);
605
+ $default_uri = str_replace("//", "/", $default_uri);
606
 
607
  return trim($default_uri, "/");
608
  }
includes/core/permalink-manager-language-plugins.php CHANGED
@@ -382,16 +382,8 @@ class Permalink_Manager_Language_Plugins extends Permalink_Manager_Class {
382
  $domains = $sitepress_settings['language_domains'];
383
  }
384
 
385
- if(!empty($element)) {
386
- $is_term = (!empty($element->term_taxonomy_id)) ? true : false;
387
- $element_id = ($is_term) ? "tax-{$element->term_taxonomy_id}" : $element->ID;
388
-
389
- // Filter only custom permalinks
390
- if(empty($permalink_manager_uris[$element_id]) || empty($domains)) { return $base; }
391
- }
392
-
393
  // Replace the domain name
394
- if(!empty($domains[$language_code])) {
395
  $base = trim($domains[$language_code], "/");
396
 
397
  // Append URL scheme
382
  $domains = $sitepress_settings['language_domains'];
383
  }
384
 
 
 
 
 
 
 
 
 
385
  // Replace the domain name
386
+ if(!empty($domains) && !empty($domains[$language_code])) {
387
  $base = trim($domains[$language_code], "/");
388
 
389
  // Append URL scheme
includes/core/permalink-manager-third-parties.php CHANGED
@@ -109,7 +109,7 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
109
 
110
  // 11. WP All Export
111
  if(class_exists('PMXE_Plugin') && (!empty($permalink_manager_options['general']['pmxi_support']))) {
112
- add_filter('pmxe_available_sections', array($this, 'wpae_custom_uri_section'), 9);
113
  add_filter('wp_all_export_available_data', array($this, 'wpae_custom_uri_section_fields'), 9);
114
  add_filter('wp_all_export_csv_rows', array($this,'wpae_export_custom_uri'), 10, 2);
115
  }
@@ -236,6 +236,10 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
236
  else if(!empty($_POST['_cs_nonce'])) {
237
  $wp_query->query_vars['do_not_redirect'] = 1;
238
  }
 
 
 
 
239
  }
240
 
241
  // WPForo
@@ -911,8 +915,6 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
911
  }
912
 
913
  function wpai_api_import_function($importData, $parsedData) {
914
- global $permalink_manager_uris;
915
-
916
  // Check if the array with $parsedData is not empty
917
  if(empty($parsedData) || empty($importData['post_type'])) { return; }
918
 
@@ -925,17 +927,33 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
925
 
926
  // Get the parsed custom URI
927
  $index = (isset($importData['i'])) ? $importData['i'] : false;
928
- $pid = (!empty($importData['pid'])) ? $importData['pid'] : false;
929
-
930
- // Prepend "tax-" prefix if needed
931
- $pid = (!empty($is_term) && !empty($pid)) ? "tax-{$pid}" : $pid;
932
 
933
  if(isset($index) && !empty($pid) && !empty($parsedData['custom_uri'][$index])) {
934
- $custom_uri = Permalink_Manager_Helper_Functions::sanitize_title($parsedData['custom_uri'][$index]);
935
-
936
- if(!empty($custom_uri)) {
937
- $permalink_manager_uris[$pid] = $custom_uri;
938
- update_option('permalink-manager-uris', $permalink_manager_uris);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
939
  }
940
  }
941
  }
@@ -1005,9 +1023,27 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
1005
  }
1006
 
1007
  function wpae_export_custom_uri($articles, $options) {
 
 
 
 
 
 
1008
  foreach($articles as &$article) {
1009
  if(!empty($article['id'])) {
1010
- $article['Custom URI'] = Permalink_Manager_URI_Functions_Post::get_post_uri($article['id']);
 
 
 
 
 
 
 
 
 
 
 
 
1011
  }
1012
  }
1013
 
109
 
110
  // 11. WP All Export
111
  if(class_exists('PMXE_Plugin') && (!empty($permalink_manager_options['general']['pmxi_support']))) {
112
+ add_filter('wp_all_export_available_sections', array($this, 'wpae_custom_uri_section'), 9);
113
  add_filter('wp_all_export_available_data', array($this, 'wpae_custom_uri_section_fields'), 9);
114
  add_filter('wp_all_export_csv_rows', array($this,'wpae_export_custom_uri'), 10, 2);
115
  }
236
  else if(!empty($_POST['_cs_nonce'])) {
237
  $wp_query->query_vars['do_not_redirect'] = 1;
238
  }
239
+ // Tutor LMS
240
+ else if(!empty($query_vars['tutor_dashboard_page'])) {
241
+ $wp_query->query_vars['do_not_redirect'] = 1;
242
+ }
243
  }
244
 
245
  // WPForo
915
  }
916
 
917
  function wpai_api_import_function($importData, $parsedData) {
 
 
918
  // Check if the array with $parsedData is not empty
919
  if(empty($parsedData) || empty($importData['post_type'])) { return; }
920
 
927
 
928
  // Get the parsed custom URI
929
  $index = (isset($importData['i'])) ? $importData['i'] : false;
930
+ $pid = (!empty($importData['pid'])) ? (int) $importData['pid'] : false;
 
 
 
931
 
932
  if(isset($index) && !empty($pid) && !empty($parsedData['custom_uri'][$index])) {
933
+ $new_uri = Permalink_Manager_Helper_Functions::sanitize_title($parsedData['custom_uri'][$index]);
934
+
935
+ if(!empty($new_uri)) {
936
+ if(!empty($is_term)) {
937
+ $default_uri = Permalink_Manager_URI_Functions_Tax::get_default_term_uri($pid);
938
+ $native_uri = Permalink_Manager_URI_Functions_Tax::get_default_term_uri($pid, true);
939
+ $custom_uri = Permalink_Manager_URI_Functions_Tax::get_term_uri($pid, false, true);
940
+ $old_uri = (!empty($custom_uri)) ? $custom_uri : $native_uri;
941
+
942
+ if($new_uri !== $old_uri) {
943
+ Permalink_Manager_URI_Functions::save_single_uri($pid, $new_uri, true, true);
944
+ do_action('permalink_manager_updated_term_uri', $pid, $new_uri, $old_uri, $native_uri, $default_uri, $single_update = true, $uri_saved = true);
945
+ }
946
+ } else {
947
+ $default_uri = Permalink_Manager_URI_Functions_Post::get_default_post_uri($pid);
948
+ $native_uri = Permalink_Manager_URI_Functions_Post::get_default_post_uri($pid, true);
949
+ $custom_uri = Permalink_Manager_URI_Functions_Post::get_post_uri($pid, false, true);
950
+ $old_uri = (!empty($custom_uri)) ? $custom_uri : $native_uri;
951
+
952
+ if($new_uri !== $old_uri) {
953
+ Permalink_Manager_URI_Functions::save_single_uri($pid, $new_uri, false, true);
954
+ do_action('permalink_manager_updated_post_uri', $pid, $new_uri, $old_uri, $native_uri, $default_uri, $single_update = true, $uri_saved = true);
955
+ }
956
+ }
957
  }
958
  }
959
  }
1023
  }
1024
 
1025
  function wpae_export_custom_uri($articles, $options) {
1026
+ if((!empty($options['selected_post_type']) && $options['selected_post_type'] == 'taxonomies') || !empty($options['is_taxonomy_export'])) {
1027
+ $is_term = true;
1028
+ } else {
1029
+ $is_term = false;
1030
+ }
1031
+
1032
  foreach($articles as &$article) {
1033
  if(!empty($article['id'])) {
1034
+ $item_id = $article['id'];
1035
+ } else if(!empty($article['ID'])) {
1036
+ $item_id = $article['ID'];
1037
+ } else if(!empty($article['Term ID'])) {
1038
+ $item_id = $article['Term ID'];
1039
+ } else {
1040
+ continue;
1041
+ }
1042
+
1043
+ if(!empty($is_term)) {
1044
+ $article['Custom URI'] = Permalink_Manager_URI_Functions_Tax::get_term_uri($item_id);
1045
+ } else {
1046
+ $article['Custom URI'] = Permalink_Manager_URI_Functions_Post::get_post_uri($item_id);
1047
  }
1048
  }
1049
 
includes/core/permalink-manager-uri-functions-post.php CHANGED
@@ -132,7 +132,7 @@ class Permalink_Manager_URI_Functions_Post extends Permalink_Manager_Class {
132
  /**
133
  * Get the active URI
134
  */
135
- public static function get_post_uri($post_id, $native_uri = false, $is_draft = false) {
136
  global $permalink_manager_uris;
137
 
138
  // Check if input is post object
@@ -140,7 +140,7 @@ class Permalink_Manager_URI_Functions_Post extends Permalink_Manager_Class {
140
 
141
  if(!empty($permalink_manager_uris[$post_id])) {
142
  $final_uri = $permalink_manager_uris[$post_id];
143
- } else if(!$is_draft) {
144
  $final_uri = self::get_default_post_uri($post_id, $native_uri);
145
  } else {
146
  $final_uri = '';
@@ -836,7 +836,7 @@ class Permalink_Manager_URI_Functions_Post extends Permalink_Manager_Class {
836
  if(isset($_POST['permalink-manager-edit-uri-element-slug']) && isset($_POST['native_slug']) && ($_POST['native_slug'] !== $_POST['permalink-manager-edit-uri-element-slug'])) {
837
 
838
  // Make sure that '_wp_old_slug' is saved
839
- if(!empty($_POST['post_name'])) {
840
  $post_before = $post;
841
 
842
  // Clone the instance of WP_Post object
132
  /**
133
  * Get the active URI
134
  */
135
+ public static function get_post_uri($post_id, $native_uri = false, $no_fallback = false) {
136
  global $permalink_manager_uris;
137
 
138
  // Check if input is post object
140
 
141
  if(!empty($permalink_manager_uris[$post_id])) {
142
  $final_uri = $permalink_manager_uris[$post_id];
143
+ } else if(!$no_fallback) {
144
  $final_uri = self::get_default_post_uri($post_id, $native_uri);
145
  } else {
146
  $final_uri = '';
836
  if(isset($_POST['permalink-manager-edit-uri-element-slug']) && isset($_POST['native_slug']) && ($_POST['native_slug'] !== $_POST['permalink-manager-edit-uri-element-slug'])) {
837
 
838
  // Make sure that '_wp_old_slug' is saved
839
+ if(!empty($_POST['post_name']) || (isset($_POST['action']) && $_POST['action'] == 'pm_save_permalink')) {
840
  $post_before = $post;
841
 
842
  // Clone the instance of WP_Post object
includes/views/permalink-manager-debug.php CHANGED
@@ -18,6 +18,16 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
18
  return $admin_sections;
19
  }
20
 
 
 
 
 
 
 
 
 
 
 
21
  public function output() {
22
  global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $permalink_manager_external_redirects, $wp_filter;
23
 
@@ -29,9 +39,9 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
29
  'fields' => array(
30
  'uris' => array(
31
  'type' => 'textarea',
32
- 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s&remove-permalink-manager-settings=uris">%s</a></strong>',
33
  __('List of the URIs generated by this plugin.', 'permalink-manager'),
34
- $debug_section_url,
35
  __('Remove all custom permalinks', 'permalink-manager')
36
  ),
37
  'label' => __('Array with URIs', 'permalink-manager'),
@@ -40,9 +50,9 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
40
  ),
41
  'custom-redirects' => array(
42
  'type' => 'textarea',
43
- 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s&remove-permalink-manager-settings=redirects">%s</a></strong>',
44
  __('List of custom redirects set-up by this plugin.', 'permalink-manager'),
45
- $debug_section_url,
46
  __('Remove all custom redirects', 'permalink-manager')
47
  ),
48
  'label' => __('Array with redirects', 'permalink-manager'),
@@ -51,9 +61,10 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
51
  ),
52
  'external-redirects' => array(
53
  'type' => 'textarea',
54
- 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s&remove-permalink-manager-settings=external-redirects">%s</a></strong>',
55
  __('List of external redirects set-up by this plugin.', 'permalink-manager'),
56
- $debug_section_url, __('Remove all external redirects', 'permalink-manager')
 
57
  ),
58
  'label' => __('Array with external redirects', 'permalink-manager'),
59
  'input_class' => 'short-textarea widefat',
@@ -61,9 +72,9 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
61
  ),
62
  'permastructs' => array(
63
  'type' => 'textarea',
64
- 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s&remove-permalink-manager-settings=permastructs">%s</a></strong>',
65
  __('List of permastructures set-up by this plugin.', 'permalink-manager'),
66
- $debug_section_url,
67
  __('Remove all permastructures settings', 'permalink-manager')
68
  ),
69
  'label' => __('Array with permastructures', 'permalink-manager'),
@@ -72,9 +83,9 @@ class Permalink_Manager_Debug extends Permalink_Manager_Class {
72
  ),
73
  'settings' => array(
74
  'type' => 'textarea',
75
- 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s&remove-permalink-manager-settings=settings">%s</a></strong>',
76
  __('List of plugin settings.', 'permalink-manager'),
77
- $debug_section_url,
78
  __('Remove all plugin settings', 'permalink-manager')
79
  ),
80
  'label' => __('Array with settings used in this plugin.', 'permalink-manager'),
18
  return $admin_sections;
19
  }
20
 
21
+ public function get_remove_settings_url($field = '') {
22
+ $debug_section_url = add_query_arg(array(
23
+ 'section' => 'debug',
24
+ 'remove-permalink-manager-settings' => $field,
25
+ '_wpnonce' => wp_create_nonce('permalink-manager')
26
+ ), Permalink_Manager_Admin_Functions::get_admin_url());
27
+
28
+ return $debug_section_url;
29
+ }
30
+
31
  public function output() {
32
  global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $permalink_manager_external_redirects, $wp_filter;
33
 
39
  'fields' => array(
40
  'uris' => array(
41
  'type' => 'textarea',
42
+ 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s">%s</a></strong>',
43
  __('List of the URIs generated by this plugin.', 'permalink-manager'),
44
+ $this->get_remove_settings_url('uris'),
45
  __('Remove all custom permalinks', 'permalink-manager')
46
  ),
47
  'label' => __('Array with URIs', 'permalink-manager'),
50
  ),
51
  'custom-redirects' => array(
52
  'type' => 'textarea',
53
+ 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s">%s</a></strong>',
54
  __('List of custom redirects set-up by this plugin.', 'permalink-manager'),
55
+ $this->get_remove_settings_url('redirects'),
56
  __('Remove all custom redirects', 'permalink-manager')
57
  ),
58
  'label' => __('Array with redirects', 'permalink-manager'),
61
  ),
62
  'external-redirects' => array(
63
  'type' => 'textarea',
64
+ 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s">%s</a></strong>',
65
  __('List of external redirects set-up by this plugin.', 'permalink-manager'),
66
+ $this->get_remove_settings_url('external-redirects'),
67
+ __('Remove all external redirects', 'permalink-manager')
68
  ),
69
  'label' => __('Array with external redirects', 'permalink-manager'),
70
  'input_class' => 'short-textarea widefat',
72
  ),
73
  'permastructs' => array(
74
  'type' => 'textarea',
75
+ 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s">%s</a></strong>',
76
  __('List of permastructures set-up by this plugin.', 'permalink-manager'),
77
+ $this->get_remove_settings_url('permastructs'),
78
  __('Remove all permastructures settings', 'permalink-manager')
79
  ),
80
  'label' => __('Array with permastructures', 'permalink-manager'),
83
  ),
84
  'settings' => array(
85
  'type' => 'textarea',
86
+ 'description' => sprintf('%s<br /><strong><a class="pm-confirm-action" href="%s">%s</a></strong>',
87
  __('List of plugin settings.', 'permalink-manager'),
88
+ $this->get_remove_settings_url('settings'),
89
  __('Remove all plugin settings', 'permalink-manager')
90
  ),
91
  'label' => __('Array with settings used in this plugin.', 'permalink-manager'),
includes/views/permalink-manager-settings.php CHANGED
@@ -193,9 +193,9 @@ class Permalink_Manager_Settings extends Permalink_Manager_Class {
193
  ),
194
  'pmxi_support' => array(
195
  'type' => 'single_checkbox',
196
- 'label' => __('WP All Import support', 'permalink-manager'),
197
  'input_class' => '',
198
- 'class_exists' => 'PMXI_Plugin',
199
  'description' => __('If disabled, the custom permalinks <strong>will not be saved</strong> for the posts imported with WP All Import plugin.', 'permalink-manager')
200
  ),
201
  'um_support' => array(
193
  ),
194
  'pmxi_support' => array(
195
  'type' => 'single_checkbox',
196
+ 'label' => __('WP All Import/Export support', 'permalink-manager'),
197
  'input_class' => '',
198
+ 'class_exists' => array('PMXI_Plugin', 'PMXE_Plugin'),
199
  'description' => __('If disabled, the custom permalinks <strong>will not be saved</strong> for the posts imported with WP All Import plugin.', 'permalink-manager')
200
  ),
201
  'um_support' => array(
languages/permalink-manager.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2022-04-22 00:31+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -32,12 +32,12 @@ msgstr ""
32
  msgid "\"Stop words\" list"
33
  msgstr ""
34
 
35
- #: includes/core/permalink-manager-actions.php:398
36
  #, php-format
37
  msgid "%d Custom URIs and %d Custom Redirects were removed!"
38
  msgstr ""
39
 
40
- #: includes/core/permalink-manager-actions.php:445
41
  #, php-format
42
  msgid "%s were removed!"
43
  msgstr ""
@@ -62,12 +62,12 @@ msgstr ""
62
  msgid "302 redirect"
63
  msgstr ""
64
 
65
- #: includes/core/permalink-manager-admin-functions.php:750
66
  #, php-format
67
  msgid "<a %s>Click here</a> to go to the list of updated slugs"
68
  msgstr ""
69
 
70
- #: includes/core/permalink-manager-admin-functions.php:749
71
  #, php-format
72
  msgid "<strong class=\"updated_count\">%d</strong> slug was updated!"
73
  msgid_plural "<strong class=\"updated_count\">%d</strong> slugs were updated!"
@@ -86,20 +86,20 @@ msgid ""
86
  "and redirect visitor to the canonical permalink.</strong>"
87
  msgstr ""
88
 
89
- #: includes/core/permalink-manager-actions.php:146
90
  msgid "<strong>No post status</strong> selected!"
91
  msgstr ""
92
 
93
- #: includes/core/permalink-manager-actions.php:140
94
  msgid "<strong>No post type</strong> selected!"
95
  msgstr ""
96
 
97
- #: includes/core/permalink-manager-actions.php:115
98
- #: includes/core/permalink-manager-admin-functions.php:754
99
  msgid "<strong>No slugs</strong> were updated!"
100
  msgstr ""
101
 
102
- #: includes/core/permalink-manager-actions.php:132
103
  msgid "<strong>No taxonomy</strong> selected!"
104
  msgstr ""
105
 
@@ -194,11 +194,11 @@ msgstr ""
194
  msgid "Apply"
195
  msgstr ""
196
 
197
- #: includes/core/permalink-manager-pro-functions.php:225
198
  msgid "Arabic"
199
  msgstr ""
200
 
201
- #: includes/core/permalink-manager-admin-functions.php:135
202
  msgid "Are you sure? This action cannot be undone!"
203
  msgstr ""
204
 
@@ -226,8 +226,8 @@ msgstr ""
226
  msgid "Author (publish_posts)"
227
  msgstr ""
228
 
229
- #: includes/core/permalink-manager-admin-functions.php:860
230
- #: includes/core/permalink-manager-admin-functions.php:872
231
  msgid "Auto-update \"Current URI\""
232
  msgstr ""
233
 
@@ -235,7 +235,7 @@ msgstr ""
235
  msgid "Auto-update permalinks"
236
  msgstr ""
237
 
238
- #: includes/core/permalink-manager-admin-functions.php:948
239
  msgid "Automatic redirect for native URI enabled:"
240
  msgstr ""
241
 
@@ -247,7 +247,7 @@ msgstr ""
247
  msgid "Breadcrumbs support"
248
  msgstr ""
249
 
250
- #: includes/core/permalink-manager-actions.php:601
251
  msgid "Broken redirects were removed successfully!"
252
  msgstr ""
253
 
@@ -255,11 +255,11 @@ msgstr ""
255
  msgid "Bulk fix all URIs (once a day, in the background)"
256
  msgstr ""
257
 
258
- #: includes/core/permalink-manager-admin-functions.php:173
259
  msgid "Buy Permalink Manager Pro"
260
  msgstr ""
261
 
262
- #: includes/core/permalink-manager-admin-functions.php:617
263
  msgid "by Maciej Bis"
264
  msgstr ""
265
 
@@ -267,15 +267,15 @@ msgstr ""
267
  msgid "Canonical redirect"
268
  msgstr ""
269
 
270
- #: includes/core/permalink-manager-pro-functions.php:226
271
  msgid "Chinese"
272
  msgstr ""
273
 
274
- #: includes/core/permalink-manager-uri-functions-tax.php:513
275
  msgid "Clear/leave the field empty to use the default permalink."
276
  msgstr ""
277
 
278
- #: includes/core/permalink-manager-admin-functions.php:888
279
  msgid "Close: "
280
  msgstr ""
281
 
@@ -295,22 +295,22 @@ msgstr ""
295
  msgid "Count"
296
  msgstr ""
297
 
298
- #: includes/core/permalink-manager-pro-functions.php:570
299
  msgid "Coupon Full URL"
300
  msgstr ""
301
 
302
- #: includes/core/permalink-manager-pro-functions.php:537
303
  msgid "Coupon Link"
304
  msgstr ""
305
 
306
- #: includes/core/permalink-manager-pro-functions.php:558
307
  msgid "Coupon URI"
308
  msgstr ""
309
 
310
- #: includes/core/permalink-manager-uri-functions-post.php:710
311
- #: includes/core/permalink-manager-uri-functions-tax.php:545
312
- #: includes/core/permalink-manager-admin-functions.php:796
313
- #: includes/core/permalink-manager-admin-functions.php:907
314
  msgid "Current URI"
315
  msgstr ""
316
 
@@ -319,18 +319,18 @@ msgstr ""
319
  msgid "Custom Permalinks"
320
  msgstr ""
321
 
322
- #: includes/core/permalink-manager-actions.php:418
323
  msgid "Custom permalinks"
324
  msgstr ""
325
 
326
- #: includes/core/permalink-manager-actions.php:422
327
  msgid "Custom redirects"
328
  msgstr ""
329
 
330
  #: includes/views/permalink-manager-tools.php:70
331
  #: includes/core/permalink-manager-third-parties.php:477
332
  #: includes/core/permalink-manager-third-parties.php:844
333
- #: includes/core/permalink-manager-uri-functions-tax.php:512
334
  msgid "Custom URI"
335
  msgstr ""
336
 
@@ -338,7 +338,7 @@ msgstr ""
338
  msgid "Custom URIs"
339
  msgstr ""
340
 
341
- #: includes/core/permalink-manager-pro-functions.php:227
342
  msgid "Danish"
343
  msgstr ""
344
 
@@ -354,11 +354,11 @@ msgstr ""
354
  msgid "Debug data"
355
  msgstr ""
356
 
357
- #: includes/core/permalink-manager-admin-functions.php:424
358
  msgid "Default permastructure"
359
  msgstr ""
360
 
361
- #: includes/core/permalink-manager-admin-functions.php:937
362
  msgid "Default URI"
363
  msgstr ""
364
 
@@ -366,29 +366,29 @@ msgstr ""
366
  msgid "Disable (Permalink Manager redirect functions)"
367
  msgstr ""
368
 
369
- #: includes/core/permalink-manager-admin-functions.php:862
370
  msgid "Disable URI Editor"
371
  msgstr ""
372
 
373
  #: includes/views/permalink-manager-settings.php:41
374
- #: includes/core/permalink-manager-admin-functions.php:874
375
  msgid "Disable URI Editor to disallow permalink changes"
376
  msgstr ""
377
 
378
- #: includes/core/permalink-manager-admin-functions.php:432
379
  msgid "Do not automatically append the slug"
380
  msgstr ""
381
 
382
- #: includes/core/permalink-manager-admin-functions.php:169
383
  msgid "Documentation"
384
  msgstr ""
385
 
386
- #: includes/core/permalink-manager-admin-functions.php:864
387
- #: includes/core/permalink-manager-admin-functions.php:870
388
  msgid "Don't auto-update \"Current URI\""
389
  msgstr ""
390
 
391
- #: includes/core/permalink-manager-admin-functions.php:871
392
  msgid ""
393
  "Don't auto-update \"Current URI\" and exclude from the \"Regenerate/reset\" "
394
  "tool"
@@ -398,7 +398,7 @@ msgstr ""
398
  msgid "Don't auto-update permalinks (default mode)"
399
  msgstr ""
400
 
401
- #: includes/core/permalink-manager-pro-functions.php:228
402
  msgid "Dutch"
403
  msgstr ""
404
 
@@ -436,7 +436,7 @@ msgid ""
436
  "permalinks & duplicated redirects."
437
  msgstr ""
438
 
439
- #: includes/core/permalink-manager-pro-functions.php:229
440
  msgid "English"
441
  msgstr ""
442
 
@@ -461,7 +461,7 @@ msgid ""
461
  "a few minutes."
462
  msgstr ""
463
 
464
- #: includes/core/permalink-manager-actions.php:426
465
  msgid "External redirects"
466
  msgstr ""
467
 
@@ -490,7 +490,7 @@ msgstr ""
490
  msgid "Find and replace"
491
  msgstr ""
492
 
493
- #: includes/core/permalink-manager-pro-functions.php:230
494
  msgid "Finnish"
495
  msgstr ""
496
 
@@ -510,7 +510,7 @@ msgstr ""
510
  msgid "Force HTTPS/WWW"
511
  msgstr ""
512
 
513
- #: includes/core/permalink-manager-pro-functions.php:231
514
  msgid "French"
515
  msgstr ""
516
 
@@ -523,7 +523,7 @@ msgstr ""
523
  msgid "General settings"
524
  msgstr ""
525
 
526
- #: includes/core/permalink-manager-pro-functions.php:232
527
  msgid "German"
528
  msgstr ""
529
 
@@ -540,11 +540,11 @@ msgstr ""
540
  msgid "Get license information"
541
  msgstr ""
542
 
543
- #: includes/core/permalink-manager-pro-functions.php:233
544
  msgid "Hebrew"
545
  msgstr ""
546
 
547
- #: includes/core/permalink-manager-pro-functions.php:234
548
  msgid "Hindi"
549
  msgstr ""
550
 
@@ -560,7 +560,7 @@ msgstr ""
560
  msgid "https://permalinkmanager.pro?utm_source=plugin"
561
  msgstr ""
562
 
563
- #: includes/core/permalink-manager-admin-functions.php:916
564
  msgid ""
565
  "If 'auto-update mode' is turned on, the 'Current URI' field will be "
566
  "automatically changed to 'Default URI' (displayed below) after the post is "
@@ -686,7 +686,7 @@ msgid ""
686
  "are open to all new ideas and would be grateful for all your comments!"
687
  msgstr ""
688
 
689
- #: includes/core/permalink-manager-admin-functions.php:406
690
  msgid ""
691
  "If you would like to translate the permastructures and set-up different "
692
  "permalink structure per language, please fill in the fields below. Otherwise "
@@ -718,15 +718,15 @@ msgstr ""
718
  msgid "Instructions"
719
  msgstr ""
720
 
721
- #: includes/core/permalink-manager-pro-functions.php:235
722
  msgid "Italian"
723
  msgstr ""
724
 
725
- #: includes/core/permalink-manager-pro-functions.php:236
726
  msgid "Japanese"
727
  msgstr ""
728
 
729
- #: includes/core/permalink-manager-pro-functions.php:237
730
  msgid "Korean"
731
  msgstr ""
732
 
@@ -762,7 +762,7 @@ msgstr ""
762
  msgid "List of the URIs generated by this plugin."
763
  msgstr ""
764
 
765
- #: includes/core/permalink-manager-admin-functions.php:736
766
  msgid "List of updated items"
767
  msgstr ""
768
 
@@ -770,7 +770,7 @@ msgstr ""
770
  msgid "Maciej Bis"
771
  msgstr ""
772
 
773
- #: includes/core/permalink-manager-admin-functions.php:989
774
  msgid "Manage redirects"
775
  msgstr ""
776
 
@@ -779,7 +779,7 @@ msgstr ""
779
  msgid "Mode"
780
  msgstr ""
781
 
782
- #: includes/core/permalink-manager-admin-functions.php:927
783
  msgid "Native slug"
784
  msgstr ""
785
 
@@ -787,13 +787,13 @@ msgstr ""
787
  msgid "Native slugs"
788
  msgstr ""
789
 
790
- #: includes/core/permalink-manager-admin-functions.php:699
791
- #: includes/core/permalink-manager-admin-functions.php:726
792
  msgid "New Slug"
793
  msgstr ""
794
 
795
- #: includes/core/permalink-manager-admin-functions.php:702
796
- #: includes/core/permalink-manager-admin-functions.php:729
797
  msgid "New URI"
798
  msgstr ""
799
 
@@ -805,7 +805,7 @@ msgstr ""
805
  msgid "No \"Custom Permalinks\" URIs were imported!"
806
  msgstr ""
807
 
808
- #: includes/core/permalink-manager-actions.php:400
809
  msgid "No Custom URIs or Custom Redirects were removed!"
810
  msgstr ""
811
 
@@ -821,12 +821,12 @@ msgstr ""
821
  msgid "No, keep special characters (.,|_+) in the slugs"
822
  msgstr ""
823
 
824
- #: includes/core/permalink-manager-pro-functions.php:238
825
  msgid "Norwegian"
826
  msgstr ""
827
 
828
- #: includes/core/permalink-manager-admin-functions.php:698
829
- #: includes/core/permalink-manager-admin-functions.php:725
830
  msgid "Old Slug"
831
  msgstr ""
832
 
@@ -834,8 +834,8 @@ msgstr ""
834
  msgid "Old slug redirect"
835
  msgstr ""
836
 
837
- #: includes/core/permalink-manager-admin-functions.php:701
838
- #: includes/core/permalink-manager-admin-functions.php:728
839
  msgid "Old URI"
840
  msgstr ""
841
 
@@ -856,14 +856,14 @@ msgid "Permalink Duplicates"
856
  msgstr ""
857
 
858
  #: includes/core/permalink-manager-third-parties.php:840
859
- #: includes/core/permalink-manager-third-parties.php:985
860
  #: includes/core/permalink-manager-gutenberg.php:33
861
- #: includes/core/permalink-manager-admin-functions.php:111
862
- #: includes/core/permalink-manager-admin-functions.php:111
863
- #: includes/core/permalink-manager-admin-functions.php:792
864
- #: includes/core/permalink-manager-admin-functions.php:883
 
865
  #: includes/core/permalink-manager-admin-functions.php:888
866
- #: includes/core/permalink-manager-admin-functions.php:889
867
  msgid "Permalink Manager"
868
  msgstr ""
869
 
@@ -889,9 +889,9 @@ msgid ""
889
  "selected above post types & taxonomies."
890
  msgstr ""
891
 
892
- #: includes/core/permalink-manager-actions.php:430
893
- #: includes/core/permalink-manager-actions.php:434
894
- #: includes/core/permalink-manager-admin-functions.php:431
895
  msgid "Permastructure settings"
896
  msgstr ""
897
 
@@ -899,7 +899,7 @@ msgstr ""
899
  msgid "Permastructure tags"
900
  msgstr ""
901
 
902
- #: includes/core/permalink-manager-admin-functions.php:405
903
  msgid "Permastructure translations"
904
  msgstr ""
905
 
@@ -907,7 +907,7 @@ msgstr ""
907
  msgid "Permastructures"
908
  msgstr ""
909
 
910
- #: includes/core/permalink-manager-pro-functions.php:239
911
  msgid "Persian"
912
  msgstr ""
913
 
@@ -958,11 +958,11 @@ msgid ""
958
  "features <a href=\"%s\" target=\"_blank\">on this page</a>."
959
  msgstr ""
960
 
961
- #: includes/core/permalink-manager-pro-functions.php:240
962
  msgid "Polish"
963
  msgstr ""
964
 
965
- #: includes/core/permalink-manager-pro-functions.php:241
966
  msgid "Portuguese"
967
  msgstr ""
968
 
@@ -981,7 +981,7 @@ msgstr ""
981
  #: includes/views/permalink-manager-permastructs.php:31
982
  #: includes/views/permalink-manager-tools.php:162
983
  #: includes/views/permalink-manager-tools.php:239
984
- #: includes/core/permalink-manager-admin-functions.php:262
985
  msgid "Post types"
986
  msgstr ""
987
 
@@ -1058,15 +1058,15 @@ msgstr ""
1058
  msgid "Replace with ..."
1059
  msgstr ""
1060
 
1061
- #: includes/core/permalink-manager-admin-functions.php:425
1062
  msgid "Restore default permastructure"
1063
  msgstr ""
1064
 
1065
- #: includes/core/permalink-manager-admin-functions.php:938
1066
  msgid "Restore Default URI"
1067
  msgstr ""
1068
 
1069
- #: includes/core/permalink-manager-pro-functions.php:242
1070
  msgid "Russian"
1071
  msgstr ""
1072
 
@@ -1092,7 +1092,7 @@ msgstr ""
1092
  msgid "Save old custom permalinks as extra redirects"
1093
  msgstr ""
1094
 
1095
- #: includes/core/permalink-manager-admin-functions.php:962
1096
  msgid "Save permalink"
1097
  msgstr ""
1098
 
@@ -1109,7 +1109,7 @@ msgstr ""
1109
  msgid "Search"
1110
  msgstr ""
1111
 
1112
- #: includes/core/permalink-manager-admin-functions.php:285
1113
  msgid "Select all"
1114
  msgstr ""
1115
 
@@ -1139,7 +1139,7 @@ msgid "Select taxonomies"
1139
  msgstr ""
1140
 
1141
  #: includes/views/permalink-manager-settings.php:14
1142
- #: includes/core/permalink-manager-admin-functions.php:157
1143
  msgid "Settings"
1144
  msgstr ""
1145
 
@@ -1147,15 +1147,15 @@ msgstr ""
1147
  msgid "Show \"Native slug\" field in URI Editor"
1148
  msgstr ""
1149
 
1150
- #: includes/core/permalink-manager-admin-functions.php:440
1151
  msgid "Show additional settings"
1152
  msgstr ""
1153
 
1154
- #: includes/core/permalink-manager-admin-functions.php:723
1155
  msgid "Show more details"
1156
  msgstr ""
1157
 
1158
- #: includes/core/permalink-manager-actions.php:687
1159
  msgid "Sitemaps were updated!"
1160
  msgstr ""
1161
 
@@ -1168,7 +1168,7 @@ msgstr ""
1168
  msgid "Slugs mode"
1169
  msgstr ""
1170
 
1171
- #: includes/core/permalink-manager-pro-functions.php:243
1172
  msgid "Spanish"
1173
  msgstr ""
1174
 
@@ -1188,14 +1188,14 @@ msgstr ""
1188
  msgid "Support"
1189
  msgstr ""
1190
 
1191
- #: includes/core/permalink-manager-pro-functions.php:244
1192
  msgid "Swedish"
1193
  msgstr ""
1194
 
1195
  #: includes/views/permalink-manager-permastructs.php:36
1196
  #: includes/views/permalink-manager-tools.php:163
1197
  #: includes/views/permalink-manager-tools.php:240
1198
- #: includes/core/permalink-manager-admin-functions.php:262
1199
  msgid "Taxonomies"
1200
  msgstr ""
1201
 
@@ -1213,11 +1213,11 @@ msgid ""
1213
  "The above permalink will be automatically updated and is locked for editing."
1214
  msgstr ""
1215
 
1216
- #: includes/core/permalink-manager-admin-functions.php:900
1217
  msgid "The custom URI cannot be edited on frontpage."
1218
  msgstr ""
1219
 
1220
- #: includes/core/permalink-manager-admin-functions.php:928
1221
  msgid ""
1222
  "The native slug is by default automatically used in native permalinks (when "
1223
  "Permalink Manager is disabled)."
@@ -1229,21 +1229,21 @@ msgid ""
1229
  "is published."
1230
  msgstr ""
1231
 
1232
- #: includes/core/permalink-manager-actions.php:625
1233
  msgid "The redirect was removed successfully!"
1234
  msgstr ""
1235
 
1236
- #: includes/core/permalink-manager-actions.php:105
1237
  msgid "The settings are saved!"
1238
  msgstr ""
1239
 
1240
- #: includes/core/permalink-manager-pro-functions.php:559
1241
  msgid ""
1242
  "The URIs are case-insensitive, eg. <strong>BLACKFRIDAY</strong> and <strong>"
1243
  "blackfriday</strong> are equivalent."
1244
  msgstr ""
1245
 
1246
- #: includes/core/permalink-manager-admin-functions.php:903
1247
  msgid ""
1248
  "The URL above is displayed in read-only mode. To enable editing, change the "
1249
  "\"<strong>URI update mode</strong>\" to <em>Don't auto-update \"Current "
@@ -1266,27 +1266,21 @@ msgid ""
1266
  " custom permalinks set with Permalink Manager."
1267
  msgstr ""
1268
 
1269
- #: includes/core/permalink-manager-admin-functions.php:1107
1270
  #, php-format
1271
  msgid ""
1272
  "This functionality is available only in <a href=\"%s\" target=\"_blank\">"
1273
  "Permalink Manager Pro</a>."
1274
  msgstr ""
1275
 
1276
- #: includes/core/permalink-manager-pro-functions.php:171
1277
- msgid ""
1278
- "This license is already in use on another website and cannot be used to "
1279
- "request automatic update for this domain."
1280
- msgstr ""
1281
-
1282
  #: includes/views/permalink-manager-settings.php:64
1283
  msgid ""
1284
  "This option can be used to alter the native settings and control if trailing "
1285
  "slash should be added or removed from the end of posts & terms permalinks."
1286
  msgstr ""
1287
 
1288
- #: includes/core/permalink-manager-admin-functions.php:696
1289
- #: includes/core/permalink-manager-admin-functions.php:723
1290
  msgid "Title"
1291
  msgstr ""
1292
 
@@ -1331,7 +1325,7 @@ msgstr ""
1331
  msgid "Trailing slashes redirect"
1332
  msgstr ""
1333
 
1334
- #: includes/core/permalink-manager-pro-functions.php:245
1335
  msgid "Turkish"
1336
  msgstr ""
1337
 
@@ -1349,24 +1343,24 @@ msgstr ""
1349
  msgid "Ultimate Member support"
1350
  msgstr ""
1351
 
1352
- #: includes/core/permalink-manager-admin-functions.php:286
1353
  msgid "Unselect all"
1354
  msgstr ""
1355
 
1356
- #: includes/core/permalink-manager-admin-functions.php:629
1357
  msgid "Upgrade to PRO"
1358
  msgstr ""
1359
 
1360
- #: includes/core/permalink-manager-actions.php:593
1361
  #, php-format
1362
  msgid "URI \"%s\" was removed successfully!"
1363
  msgstr ""
1364
 
1365
- #: includes/core/permalink-manager-actions.php:605
1366
  msgid "URI and/or custom redirects does not exist or were already removed!"
1367
  msgstr ""
1368
 
1369
- #: includes/core/permalink-manager-admin-functions.php:156
1370
  msgid "URI Editor"
1371
  msgstr ""
1372
 
@@ -1378,12 +1372,12 @@ msgstr ""
1378
  msgid "URI Editor role capability"
1379
  msgstr ""
1380
 
1381
- #: includes/core/permalink-manager-actions.php:655
1382
  msgid "URI is already in use, please select another one!"
1383
  msgstr ""
1384
 
1385
  #: includes/views/permalink-manager-settings.php:39
1386
- #: includes/core/permalink-manager-admin-functions.php:915
1387
  msgid "URI update mode"
1388
  msgstr ""
1389
 
@@ -1395,7 +1389,7 @@ msgstr ""
1395
  msgid "Use default settings"
1396
  msgstr ""
1397
 
1398
- #: includes/core/permalink-manager-admin-functions.php:868
1399
  #, php-format
1400
  msgid "Use global settings [%s]"
1401
  msgstr ""
@@ -1447,7 +1441,7 @@ msgstr ""
1447
  msgid "Yes, use native settings"
1448
  msgstr ""
1449
 
1450
- #: includes/core/permalink-manager-actions.php:412
1451
  msgid "You are not allowed to remove Permalink Manager data!"
1452
  msgstr ""
1453
 
@@ -1463,7 +1457,7 @@ msgid ""
1463
  "redirects, eg. Yoast SEO Premium or Redirection."
1464
  msgstr ""
1465
 
1466
- #: includes/core/permalink-manager-pro-functions.php:164
1467
  msgid "You own a lifetime licence key."
1468
  msgstr ""
1469
 
@@ -1485,3 +1479,9 @@ msgstr ""
1485
  #: includes/core/permalink-manager-pro-functions.php:154
1486
  msgid "Your Permalink Manager Pro licence key is invalid!"
1487
  msgstr ""
 
 
 
 
 
 
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2022-06-03 22:00+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
32
  msgid "\"Stop words\" list"
33
  msgstr ""
34
 
35
+ #: includes/core/permalink-manager-actions.php:399
36
  #, php-format
37
  msgid "%d Custom URIs and %d Custom Redirects were removed!"
38
  msgstr ""
39
 
40
+ #: includes/core/permalink-manager-actions.php:446
41
  #, php-format
42
  msgid "%s were removed!"
43
  msgstr ""
62
  msgid "302 redirect"
63
  msgstr ""
64
 
65
+ #: includes/core/permalink-manager-admin-functions.php:749
66
  #, php-format
67
  msgid "<a %s>Click here</a> to go to the list of updated slugs"
68
  msgstr ""
69
 
70
+ #: includes/core/permalink-manager-admin-functions.php:748
71
  #, php-format
72
  msgid "<strong class=\"updated_count\">%d</strong> slug was updated!"
73
  msgid_plural "<strong class=\"updated_count\">%d</strong> slugs were updated!"
86
  "and redirect visitor to the canonical permalink.</strong>"
87
  msgstr ""
88
 
89
+ #: includes/core/permalink-manager-actions.php:147
90
  msgid "<strong>No post status</strong> selected!"
91
  msgstr ""
92
 
93
+ #: includes/core/permalink-manager-actions.php:141
94
  msgid "<strong>No post type</strong> selected!"
95
  msgstr ""
96
 
97
+ #: includes/core/permalink-manager-actions.php:116
98
+ #: includes/core/permalink-manager-admin-functions.php:753
99
  msgid "<strong>No slugs</strong> were updated!"
100
  msgstr ""
101
 
102
+ #: includes/core/permalink-manager-actions.php:133
103
  msgid "<strong>No taxonomy</strong> selected!"
104
  msgstr ""
105
 
194
  msgid "Apply"
195
  msgstr ""
196
 
197
+ #: includes/core/permalink-manager-pro-functions.php:227
198
  msgid "Arabic"
199
  msgstr ""
200
 
201
+ #: includes/core/permalink-manager-admin-functions.php:134
202
  msgid "Are you sure? This action cannot be undone!"
203
  msgstr ""
204
 
226
  msgid "Author (publish_posts)"
227
  msgstr ""
228
 
229
+ #: includes/core/permalink-manager-admin-functions.php:859
230
+ #: includes/core/permalink-manager-admin-functions.php:871
231
  msgid "Auto-update \"Current URI\""
232
  msgstr ""
233
 
235
  msgid "Auto-update permalinks"
236
  msgstr ""
237
 
238
+ #: includes/core/permalink-manager-admin-functions.php:947
239
  msgid "Automatic redirect for native URI enabled:"
240
  msgstr ""
241
 
247
  msgid "Breadcrumbs support"
248
  msgstr ""
249
 
250
+ #: includes/core/permalink-manager-actions.php:602
251
  msgid "Broken redirects were removed successfully!"
252
  msgstr ""
253
 
255
  msgid "Bulk fix all URIs (once a day, in the background)"
256
  msgstr ""
257
 
258
+ #: includes/core/permalink-manager-admin-functions.php:172
259
  msgid "Buy Permalink Manager Pro"
260
  msgstr ""
261
 
262
+ #: includes/core/permalink-manager-admin-functions.php:616
263
  msgid "by Maciej Bis"
264
  msgstr ""
265
 
267
  msgid "Canonical redirect"
268
  msgstr ""
269
 
270
+ #: includes/core/permalink-manager-pro-functions.php:228
271
  msgid "Chinese"
272
  msgstr ""
273
 
274
+ #: includes/core/permalink-manager-uri-functions-tax.php:520
275
  msgid "Clear/leave the field empty to use the default permalink."
276
  msgstr ""
277
 
278
+ #: includes/core/permalink-manager-admin-functions.php:887
279
  msgid "Close: "
280
  msgstr ""
281
 
295
  msgid "Count"
296
  msgstr ""
297
 
298
+ #: includes/core/permalink-manager-pro-functions.php:573
299
  msgid "Coupon Full URL"
300
  msgstr ""
301
 
302
+ #: includes/core/permalink-manager-pro-functions.php:540
303
  msgid "Coupon Link"
304
  msgstr ""
305
 
306
+ #: includes/core/permalink-manager-pro-functions.php:561
307
  msgid "Coupon URI"
308
  msgstr ""
309
 
310
+ #: includes/core/permalink-manager-uri-functions-post.php:711
311
+ #: includes/core/permalink-manager-uri-functions-tax.php:552
312
+ #: includes/core/permalink-manager-admin-functions.php:795
313
+ #: includes/core/permalink-manager-admin-functions.php:906
314
  msgid "Current URI"
315
  msgstr ""
316
 
319
  msgid "Custom Permalinks"
320
  msgstr ""
321
 
322
+ #: includes/core/permalink-manager-actions.php:419
323
  msgid "Custom permalinks"
324
  msgstr ""
325
 
326
+ #: includes/core/permalink-manager-actions.php:423
327
  msgid "Custom redirects"
328
  msgstr ""
329
 
330
  #: includes/views/permalink-manager-tools.php:70
331
  #: includes/core/permalink-manager-third-parties.php:477
332
  #: includes/core/permalink-manager-third-parties.php:844
333
+ #: includes/core/permalink-manager-uri-functions-tax.php:519
334
  msgid "Custom URI"
335
  msgstr ""
336
 
338
  msgid "Custom URIs"
339
  msgstr ""
340
 
341
+ #: includes/core/permalink-manager-pro-functions.php:229
342
  msgid "Danish"
343
  msgstr ""
344
 
354
  msgid "Debug data"
355
  msgstr ""
356
 
357
+ #: includes/core/permalink-manager-admin-functions.php:423
358
  msgid "Default permastructure"
359
  msgstr ""
360
 
361
+ #: includes/core/permalink-manager-admin-functions.php:936
362
  msgid "Default URI"
363
  msgstr ""
364
 
366
  msgid "Disable (Permalink Manager redirect functions)"
367
  msgstr ""
368
 
369
+ #: includes/core/permalink-manager-admin-functions.php:861
370
  msgid "Disable URI Editor"
371
  msgstr ""
372
 
373
  #: includes/views/permalink-manager-settings.php:41
374
+ #: includes/core/permalink-manager-admin-functions.php:873
375
  msgid "Disable URI Editor to disallow permalink changes"
376
  msgstr ""
377
 
378
+ #: includes/core/permalink-manager-admin-functions.php:431
379
  msgid "Do not automatically append the slug"
380
  msgstr ""
381
 
382
+ #: includes/core/permalink-manager-admin-functions.php:168
383
  msgid "Documentation"
384
  msgstr ""
385
 
386
+ #: includes/core/permalink-manager-admin-functions.php:863
387
+ #: includes/core/permalink-manager-admin-functions.php:869
388
  msgid "Don't auto-update \"Current URI\""
389
  msgstr ""
390
 
391
+ #: includes/core/permalink-manager-admin-functions.php:870
392
  msgid ""
393
  "Don't auto-update \"Current URI\" and exclude from the \"Regenerate/reset\" "
394
  "tool"
398
  msgid "Don't auto-update permalinks (default mode)"
399
  msgstr ""
400
 
401
+ #: includes/core/permalink-manager-pro-functions.php:230
402
  msgid "Dutch"
403
  msgstr ""
404
 
436
  "permalinks & duplicated redirects."
437
  msgstr ""
438
 
439
+ #: includes/core/permalink-manager-pro-functions.php:231
440
  msgid "English"
441
  msgstr ""
442
 
461
  "a few minutes."
462
  msgstr ""
463
 
464
+ #: includes/core/permalink-manager-actions.php:427
465
  msgid "External redirects"
466
  msgstr ""
467
 
490
  msgid "Find and replace"
491
  msgstr ""
492
 
493
+ #: includes/core/permalink-manager-pro-functions.php:232
494
  msgid "Finnish"
495
  msgstr ""
496
 
510
  msgid "Force HTTPS/WWW"
511
  msgstr ""
512
 
513
+ #: includes/core/permalink-manager-pro-functions.php:233
514
  msgid "French"
515
  msgstr ""
516
 
523
  msgid "General settings"
524
  msgstr ""
525
 
526
+ #: includes/core/permalink-manager-pro-functions.php:234
527
  msgid "German"
528
  msgstr ""
529
 
540
  msgid "Get license information"
541
  msgstr ""
542
 
543
+ #: includes/core/permalink-manager-pro-functions.php:235
544
  msgid "Hebrew"
545
  msgstr ""
546
 
547
+ #: includes/core/permalink-manager-pro-functions.php:236
548
  msgid "Hindi"
549
  msgstr ""
550
 
560
  msgid "https://permalinkmanager.pro?utm_source=plugin"
561
  msgstr ""
562
 
563
+ #: includes/core/permalink-manager-admin-functions.php:915
564
  msgid ""
565
  "If 'auto-update mode' is turned on, the 'Current URI' field will be "
566
  "automatically changed to 'Default URI' (displayed below) after the post is "
686
  "are open to all new ideas and would be grateful for all your comments!"
687
  msgstr ""
688
 
689
+ #: includes/core/permalink-manager-admin-functions.php:405
690
  msgid ""
691
  "If you would like to translate the permastructures and set-up different "
692
  "permalink structure per language, please fill in the fields below. Otherwise "
718
  msgid "Instructions"
719
  msgstr ""
720
 
721
+ #: includes/core/permalink-manager-pro-functions.php:237
722
  msgid "Italian"
723
  msgstr ""
724
 
725
+ #: includes/core/permalink-manager-pro-functions.php:238
726
  msgid "Japanese"
727
  msgstr ""
728
 
729
+ #: includes/core/permalink-manager-pro-functions.php:239
730
  msgid "Korean"
731
  msgstr ""
732
 
762
  msgid "List of the URIs generated by this plugin."
763
  msgstr ""
764
 
765
+ #: includes/core/permalink-manager-admin-functions.php:735
766
  msgid "List of updated items"
767
  msgstr ""
768
 
770
  msgid "Maciej Bis"
771
  msgstr ""
772
 
773
+ #: includes/core/permalink-manager-admin-functions.php:988
774
  msgid "Manage redirects"
775
  msgstr ""
776
 
779
  msgid "Mode"
780
  msgstr ""
781
 
782
+ #: includes/core/permalink-manager-admin-functions.php:926
783
  msgid "Native slug"
784
  msgstr ""
785
 
787
  msgid "Native slugs"
788
  msgstr ""
789
 
790
+ #: includes/core/permalink-manager-admin-functions.php:698
791
+ #: includes/core/permalink-manager-admin-functions.php:725
792
  msgid "New Slug"
793
  msgstr ""
794
 
795
+ #: includes/core/permalink-manager-admin-functions.php:701
796
+ #: includes/core/permalink-manager-admin-functions.php:728
797
  msgid "New URI"
798
  msgstr ""
799
 
805
  msgid "No \"Custom Permalinks\" URIs were imported!"
806
  msgstr ""
807
 
808
+ #: includes/core/permalink-manager-actions.php:401
809
  msgid "No Custom URIs or Custom Redirects were removed!"
810
  msgstr ""
811
 
821
  msgid "No, keep special characters (.,|_+) in the slugs"
822
  msgstr ""
823
 
824
+ #: includes/core/permalink-manager-pro-functions.php:240
825
  msgid "Norwegian"
826
  msgstr ""
827
 
828
+ #: includes/core/permalink-manager-admin-functions.php:697
829
+ #: includes/core/permalink-manager-admin-functions.php:724
830
  msgid "Old Slug"
831
  msgstr ""
832
 
834
  msgid "Old slug redirect"
835
  msgstr ""
836
 
837
+ #: includes/core/permalink-manager-admin-functions.php:700
838
+ #: includes/core/permalink-manager-admin-functions.php:727
839
  msgid "Old URI"
840
  msgstr ""
841
 
856
  msgstr ""
857
 
858
  #: includes/core/permalink-manager-third-parties.php:840
859
+ #: includes/core/permalink-manager-third-parties.php:999
860
  #: includes/core/permalink-manager-gutenberg.php:33
861
+ #: includes/core/permalink-manager-admin-functions.php:110
862
+ #: includes/core/permalink-manager-admin-functions.php:110
863
+ #: includes/core/permalink-manager-admin-functions.php:791
864
+ #: includes/core/permalink-manager-admin-functions.php:882
865
+ #: includes/core/permalink-manager-admin-functions.php:887
866
  #: includes/core/permalink-manager-admin-functions.php:888
 
867
  msgid "Permalink Manager"
868
  msgstr ""
869
 
889
  "selected above post types & taxonomies."
890
  msgstr ""
891
 
892
+ #: includes/core/permalink-manager-actions.php:431
893
+ #: includes/core/permalink-manager-actions.php:435
894
+ #: includes/core/permalink-manager-admin-functions.php:430
895
  msgid "Permastructure settings"
896
  msgstr ""
897
 
899
  msgid "Permastructure tags"
900
  msgstr ""
901
 
902
+ #: includes/core/permalink-manager-admin-functions.php:404
903
  msgid "Permastructure translations"
904
  msgstr ""
905
 
907
  msgid "Permastructures"
908
  msgstr ""
909
 
910
+ #: includes/core/permalink-manager-pro-functions.php:241
911
  msgid "Persian"
912
  msgstr ""
913
 
958
  "features <a href=\"%s\" target=\"_blank\">on this page</a>."
959
  msgstr ""
960
 
961
+ #: includes/core/permalink-manager-pro-functions.php:242
962
  msgid "Polish"
963
  msgstr ""
964
 
965
+ #: includes/core/permalink-manager-pro-functions.php:243
966
  msgid "Portuguese"
967
  msgstr ""
968
 
981
  #: includes/views/permalink-manager-permastructs.php:31
982
  #: includes/views/permalink-manager-tools.php:162
983
  #: includes/views/permalink-manager-tools.php:239
984
+ #: includes/core/permalink-manager-admin-functions.php:261
985
  msgid "Post types"
986
  msgstr ""
987
 
1058
  msgid "Replace with ..."
1059
  msgstr ""
1060
 
1061
+ #: includes/core/permalink-manager-admin-functions.php:424
1062
  msgid "Restore default permastructure"
1063
  msgstr ""
1064
 
1065
+ #: includes/core/permalink-manager-admin-functions.php:937
1066
  msgid "Restore Default URI"
1067
  msgstr ""
1068
 
1069
+ #: includes/core/permalink-manager-pro-functions.php:244
1070
  msgid "Russian"
1071
  msgstr ""
1072
 
1092
  msgid "Save old custom permalinks as extra redirects"
1093
  msgstr ""
1094
 
1095
+ #: includes/core/permalink-manager-admin-functions.php:961
1096
  msgid "Save permalink"
1097
  msgstr ""
1098
 
1109
  msgid "Search"
1110
  msgstr ""
1111
 
1112
+ #: includes/core/permalink-manager-admin-functions.php:284
1113
  msgid "Select all"
1114
  msgstr ""
1115
 
1139
  msgstr ""
1140
 
1141
  #: includes/views/permalink-manager-settings.php:14
1142
+ #: includes/core/permalink-manager-admin-functions.php:156
1143
  msgid "Settings"
1144
  msgstr ""
1145
 
1147
  msgid "Show \"Native slug\" field in URI Editor"
1148
  msgstr ""
1149
 
1150
+ #: includes/core/permalink-manager-admin-functions.php:439
1151
  msgid "Show additional settings"
1152
  msgstr ""
1153
 
1154
+ #: includes/core/permalink-manager-admin-functions.php:722
1155
  msgid "Show more details"
1156
  msgstr ""
1157
 
1158
+ #: includes/core/permalink-manager-actions.php:704
1159
  msgid "Sitemaps were updated!"
1160
  msgstr ""
1161
 
1168
  msgid "Slugs mode"
1169
  msgstr ""
1170
 
1171
+ #: includes/core/permalink-manager-pro-functions.php:245
1172
  msgid "Spanish"
1173
  msgstr ""
1174
 
1188
  msgid "Support"
1189
  msgstr ""
1190
 
1191
+ #: includes/core/permalink-manager-pro-functions.php:246
1192
  msgid "Swedish"
1193
  msgstr ""
1194
 
1195
  #: includes/views/permalink-manager-permastructs.php:36
1196
  #: includes/views/permalink-manager-tools.php:163
1197
  #: includes/views/permalink-manager-tools.php:240
1198
+ #: includes/core/permalink-manager-admin-functions.php:261
1199
  msgid "Taxonomies"
1200
  msgstr ""
1201
 
1213
  "The above permalink will be automatically updated and is locked for editing."
1214
  msgstr ""
1215
 
1216
+ #: includes/core/permalink-manager-admin-functions.php:899
1217
  msgid "The custom URI cannot be edited on frontpage."
1218
  msgstr ""
1219
 
1220
+ #: includes/core/permalink-manager-admin-functions.php:927
1221
  msgid ""
1222
  "The native slug is by default automatically used in native permalinks (when "
1223
  "Permalink Manager is disabled)."
1229
  "is published."
1230
  msgstr ""
1231
 
1232
+ #: includes/core/permalink-manager-actions.php:626
1233
  msgid "The redirect was removed successfully!"
1234
  msgstr ""
1235
 
1236
+ #: includes/core/permalink-manager-actions.php:106
1237
  msgid "The settings are saved!"
1238
  msgstr ""
1239
 
1240
+ #: includes/core/permalink-manager-pro-functions.php:562
1241
  msgid ""
1242
  "The URIs are case-insensitive, eg. <strong>BLACKFRIDAY</strong> and <strong>"
1243
  "blackfriday</strong> are equivalent."
1244
  msgstr ""
1245
 
1246
+ #: includes/core/permalink-manager-admin-functions.php:902
1247
  msgid ""
1248
  "The URL above is displayed in read-only mode. To enable editing, change the "
1249
  "\"<strong>URI update mode</strong>\" to <em>Don't auto-update \"Current "
1266
  " custom permalinks set with Permalink Manager."
1267
  msgstr ""
1268
 
1269
+ #: includes/core/permalink-manager-admin-functions.php:1092
1270
  #, php-format
1271
  msgid ""
1272
  "This functionality is available only in <a href=\"%s\" target=\"_blank\">"
1273
  "Permalink Manager Pro</a>."
1274
  msgstr ""
1275
 
 
 
 
 
 
 
1276
  #: includes/views/permalink-manager-settings.php:64
1277
  msgid ""
1278
  "This option can be used to alter the native settings and control if trailing "
1279
  "slash should be added or removed from the end of posts & terms permalinks."
1280
  msgstr ""
1281
 
1282
+ #: includes/core/permalink-manager-admin-functions.php:695
1283
+ #: includes/core/permalink-manager-admin-functions.php:722
1284
  msgid "Title"
1285
  msgstr ""
1286
 
1325
  msgid "Trailing slashes redirect"
1326
  msgstr ""
1327
 
1328
+ #: includes/core/permalink-manager-pro-functions.php:247
1329
  msgid "Turkish"
1330
  msgstr ""
1331
 
1343
  msgid "Ultimate Member support"
1344
  msgstr ""
1345
 
1346
+ #: includes/core/permalink-manager-admin-functions.php:285
1347
  msgid "Unselect all"
1348
  msgstr ""
1349
 
1350
+ #: includes/core/permalink-manager-admin-functions.php:628
1351
  msgid "Upgrade to PRO"
1352
  msgstr ""
1353
 
1354
+ #: includes/core/permalink-manager-actions.php:594
1355
  #, php-format
1356
  msgid "URI \"%s\" was removed successfully!"
1357
  msgstr ""
1358
 
1359
+ #: includes/core/permalink-manager-actions.php:606
1360
  msgid "URI and/or custom redirects does not exist or were already removed!"
1361
  msgstr ""
1362
 
1363
+ #: includes/core/permalink-manager-admin-functions.php:155
1364
  msgid "URI Editor"
1365
  msgstr ""
1366
 
1372
  msgid "URI Editor role capability"
1373
  msgstr ""
1374
 
1375
+ #: includes/core/permalink-manager-actions.php:656
1376
  msgid "URI is already in use, please select another one!"
1377
  msgstr ""
1378
 
1379
  #: includes/views/permalink-manager-settings.php:39
1380
+ #: includes/core/permalink-manager-admin-functions.php:914
1381
  msgid "URI update mode"
1382
  msgstr ""
1383
 
1389
  msgid "Use default settings"
1390
  msgstr ""
1391
 
1392
+ #: includes/core/permalink-manager-admin-functions.php:867
1393
  #, php-format
1394
  msgid "Use global settings [%s]"
1395
  msgstr ""
1441
  msgid "Yes, use native settings"
1442
  msgstr ""
1443
 
1444
+ #: includes/core/permalink-manager-actions.php:413
1445
  msgid "You are not allowed to remove Permalink Manager data!"
1446
  msgstr ""
1447
 
1457
  "redirects, eg. Yoast SEO Premium or Redirection."
1458
  msgstr ""
1459
 
1460
+ #: includes/core/permalink-manager-pro-functions.php:170
1461
  msgid "You own a lifetime licence key."
1462
  msgstr ""
1463
 
1479
  #: includes/core/permalink-manager-pro-functions.php:154
1480
  msgid "Your Permalink Manager Pro licence key is invalid!"
1481
  msgstr ""
1482
+
1483
+ #: includes/core/permalink-manager-pro-functions.php:164
1484
+ msgid ""
1485
+ "Your Permalink Manager Pro license is already in use on another website and "
1486
+ "cannot be used to request automatic update for this domain."
1487
+ msgstr ""
out/permalink-manager-admin.css CHANGED
@@ -85,11 +85,6 @@
85
 
86
  #permalink-manager .updated-slugs-table .row-title{max-width:400px}
87
 
88
- /**
89
- * Plugins admin page
90
- */
91
- .plugin_license_info_row{transform:translate(0,-1px)}
92
-
93
  /**
94
  * Columns
95
  */
85
 
86
  #permalink-manager .updated-slugs-table .row-title{max-width:400px}
87
 
 
 
 
 
 
88
  /**
89
  * Columns
90
  */
out/permalink-manager-admin.js CHANGED
@@ -300,7 +300,7 @@ jQuery(document).ready(function() {
300
  jQuery.ajax(permalink_manager.ajax_url, {
301
  type: 'POST',
302
  data: {
303
- action: 'dismissed_notice_handler',
304
  alert_id: alert_id,
305
  }
306
  });
@@ -309,11 +309,27 @@ jQuery(document).ready(function() {
309
  /**
310
  * Save permalinks from Gutenberg with AJAX
311
  */
 
 
 
312
  jQuery('#permalink-manager .save-row.hidden').removeClass('hidden');
313
  jQuery('#permalink-manager').on('click', '#permalink-manager-save-button', pm_gutenberg_save_uri);
314
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  function pm_gutenberg_reload() {
316
- var pm_container = jQuery('#permalink-manager.postbox');
317
  var pm_post_id = jQuery('input[name="permalink-manager-edit-uri-element-id"]').val();
318
 
319
  jQuery.ajax({
@@ -322,14 +338,10 @@ jQuery(document).ready(function() {
322
  data: {
323
  'post_id': pm_post_id
324
  },
325
- beforeSend: function() {
326
- jQuery(pm_container).LoadingOverlay("show", {
327
- background : "rgba(0, 0, 0, 0.1)",
328
- });
329
- },
330
  success: function(html) {
331
  jQuery(pm_container).find('.permalink-manager-gutenberg').replaceWith(html);
332
- jQuery(pm_container).LoadingOverlay("hide");
333
 
334
  jQuery(pm_container).find('select[name="auto_update_uri"]').trigger("change");
335
  pm_help_tooltips();
@@ -338,13 +350,14 @@ jQuery(document).ready(function() {
338
  }
339
 
340
  function pm_gutenberg_save_uri() {
341
- var pm_container = jQuery('#permalink-manager.postbox');
342
  var pm_fields = jQuery(pm_container).find("input, select");
343
 
344
  jQuery.ajax({
345
  type: 'POST',
346
  url: permalink_manager.ajax_url,
 
347
  data: jQuery(pm_fields).serialize() + '&action=pm_save_permalink',
 
348
  success: pm_gutenberg_reload
349
  });
350
 
@@ -354,21 +367,25 @@ jQuery(document).ready(function() {
354
  /**
355
  * Reload the URI Editor in Gutenberg after the post is published or the title/slug is changed
356
  */
357
- if(typeof wp !== 'undefined' && typeof wp.data !== 'undefined' && typeof wp.data.select !== 'undefined' && typeof wp.blocks !== 'undefined' && typeof wp.data.subscribe !== 'undefined' && wp.data.select('core/editor') !== 'undefined' && wp.data.select('core/editor') !== null) {
358
- var pm_gutenberg_reload_in_progress = 0;
359
-
360
  const pm_unsubscribe = wp.data.subscribe(function() {
361
  var isSavingPost = wp.data.select('core/editor').isSavingPost();
362
  var isAutosavingPost = wp.data.select('core/editor').isAutosavingPost();
363
  var didPostSaveRequestSucceed = wp.data.select('core/editor').didPostSaveRequestSucceed();
 
 
 
 
 
 
364
 
365
- // Wait until the last occurence is called
366
- if(isSavingPost && !isAutosavingPost && didPostSaveRequestSucceed) {
367
- clearTimeout(pm_gutenberg_reload_in_progress);
 
 
368
 
369
- pm_gutenberg_reload_in_progress = setTimeout(function(){
370
- pm_gutenberg_reload();
371
- }, 1500);
372
  }
373
  });
374
  }
300
  jQuery.ajax(permalink_manager.ajax_url, {
301
  type: 'POST',
302
  data: {
303
+ action: 'pm_dismissed_notice_handler',
304
  alert_id: alert_id,
305
  }
306
  });
309
  /**
310
  * Save permalinks from Gutenberg with AJAX
311
  */
312
+ var pm_container = jQuery('#permalink-manager.postbox');
313
+ var pm_container_disabled = false;
314
+ var pm_container_reloading = false;
315
  jQuery('#permalink-manager .save-row.hidden').removeClass('hidden');
316
  jQuery('#permalink-manager').on('click', '#permalink-manager-save-button', pm_gutenberg_save_uri);
317
 
318
+ function pm_gutenberg_loading_overlay(show = true) {
319
+ if(show && !pm_container_disabled) {
320
+ pm_container_disabled = true;
321
+
322
+ jQuery(pm_container).LoadingOverlay('show', {
323
+ background: 'rgba(0, 0, 0, 0.1)',
324
+ });
325
+ } else if(!show && pm_container_disabled) {
326
+ pm_container_disabled = false;
327
+
328
+ jQuery(pm_container).LoadingOverlay('hide', true);
329
+ }
330
+ }
331
+
332
  function pm_gutenberg_reload() {
 
333
  var pm_post_id = jQuery('input[name="permalink-manager-edit-uri-element-id"]').val();
334
 
335
  jQuery.ajax({
338
  data: {
339
  'post_id': pm_post_id
340
  },
341
+ beforeSend: pm_gutenberg_loading_overlay,
 
 
 
 
342
  success: function(html) {
343
  jQuery(pm_container).find('.permalink-manager-gutenberg').replaceWith(html);
344
+ pm_gutenberg_loading_overlay(false);
345
 
346
  jQuery(pm_container).find('select[name="auto_update_uri"]').trigger("change");
347
  pm_help_tooltips();
350
  }
351
 
352
  function pm_gutenberg_save_uri() {
 
353
  var pm_fields = jQuery(pm_container).find("input, select");
354
 
355
  jQuery.ajax({
356
  type: 'POST',
357
  url: permalink_manager.ajax_url,
358
+ async: true,
359
  data: jQuery(pm_fields).serialize() + '&action=pm_save_permalink',
360
+ beforeSend: pm_gutenberg_loading_overlay,
361
  success: pm_gutenberg_reload
362
  });
363
 
367
  /**
368
  * Reload the URI Editor in Gutenberg after the post is published or the title/slug is changed
369
  */
370
+ if(typeof wp !== 'undefined' && typeof wp.data !== 'undefined' && typeof wp.data.select !== 'undefined' && typeof wp.data.subscribe !== 'undefined' && wp.data.select('core/editor') != null && wp.data.select('core/edit-post') != null) {
 
 
371
  const pm_unsubscribe = wp.data.subscribe(function() {
372
  var isSavingPost = wp.data.select('core/editor').isSavingPost();
373
  var isAutosavingPost = wp.data.select('core/editor').isAutosavingPost();
374
  var didPostSaveRequestSucceed = wp.data.select('core/editor').didPostSaveRequestSucceed();
375
+ var isSavingMetaBoxes = wp.data.select('core/edit-post').isSavingMetaBoxes();
376
+
377
+ // Disable URI Editor until it is reloaded
378
+ if(isSavingPost && !isAutosavingPost) {
379
+ pm_gutenberg_loading_overlay();
380
+ }
381
 
382
+ // Reload URI Editor only after metaboxes are saved
383
+ if(isSavingMetaBoxes) {
384
+ pm_container_reloading = true;
385
+ } else if(pm_container_reloading) {
386
+ pm_container_reloading = false;
387
 
388
+ pm_gutenberg_reload();
 
 
389
  }
390
  });
391
  }
permalink-manager.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php
2
 
3
  /**
4
- * Plugin Name: Permalink Manager Lite
5
  * Plugin URI: https://permalinkmanager.pro?utm_source=plugin
6
  * Description: Advanced plugin that allows to set-up custom permalinks (bulk editors included), slugs and permastructures (WooCommerce compatible).
7
- * Version: 2.2.18
8
  * Author: Maciej Bis
9
  * Author URI: http://maciejbis.net/
10
  * License: GPL-2.0+
@@ -12,7 +12,7 @@
12
  * Text Domain: permalink-manager
13
  * Domain Path: /languages
14
  * WC requires at least: 3.0.0
15
- * WC tested up to: 6.5.1
16
  */
17
 
18
  // If this file is called directly or plugin is already defined, abort.
@@ -25,7 +25,7 @@ if(!class_exists('Permalink_Manager_Class')) {
25
  // Define the directories used to load plugin files.
26
  define( 'PERMALINK_MANAGER_PLUGIN_NAME', 'Permalink Manager' );
27
  define( 'PERMALINK_MANAGER_PLUGIN_SLUG', 'permalink-manager' );
28
- define( 'PERMALINK_MANAGER_VERSION', '2.2.18' );
29
  define( 'PERMALINK_MANAGER_FILE', __FILE__ );
30
  define( 'PERMALINK_MANAGER_DIR', untrailingslashit(dirname(__FILE__)) );
31
  define( 'PERMALINK_MANAGER_BASENAME', plugin_basename(__FILE__));
@@ -143,7 +143,7 @@ if(!class_exists('Permalink_Manager_Class')) {
143
  // 2. Globals used to display additional content (eg. alerts)
144
  global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
145
 
146
- $this->permalink_manager_alerts = $permalink_manager_alerts = apply_filters('permalink_manager_alerts', get_option('permalink-manager-alerts', array()));
147
  $this->permalink_manager_before_sections_html = $permalink_manager_before_sections_html = apply_filters('permalink_manager_before_sections', '');
148
  $this->permalink_manager_after_sections_html = $permalink_manager_after_sections_html = apply_filters('permalink_manager_after_sections', '');
149
  }
@@ -182,7 +182,7 @@ if(!class_exists('Permalink_Manager_Class')) {
182
  'disable_slug_sanitization' => 0,
183
  'keep_accents' => 0,
184
  'partial_disable' => array(
185
- 'post_types' => array('attachment', 'tribe_events')
186
  ),
187
  'ignore_drafts' => 1,
188
  'edit_uris_cap' => 'publish_posts',
@@ -273,6 +273,11 @@ if(!class_exists('Permalink_Manager_Class')) {
273
  if(!empty($permalink_manager_unfiltered_options)) {
274
  update_option('permalink-manager', $permalink_manager_unfiltered_options);
275
  }
 
 
 
 
 
276
  }
277
 
278
  /**
1
  <?php
2
 
3
  /**
4
+ * Plugin Name: Permalink Manager Pro
5
  * Plugin URI: https://permalinkmanager.pro?utm_source=plugin
6
  * Description: Advanced plugin that allows to set-up custom permalinks (bulk editors included), slugs and permastructures (WooCommerce compatible).
7
+ * Version: 2.2.19.3.1
8
  * Author: Maciej Bis
9
  * Author URI: http://maciejbis.net/
10
  * License: GPL-2.0+
12
  * Text Domain: permalink-manager
13
  * Domain Path: /languages
14
  * WC requires at least: 3.0.0
15
+ * WC tested up to: 6.8.0
16
  */
17
 
18
  // If this file is called directly or plugin is already defined, abort.
25
  // Define the directories used to load plugin files.
26
  define( 'PERMALINK_MANAGER_PLUGIN_NAME', 'Permalink Manager' );
27
  define( 'PERMALINK_MANAGER_PLUGIN_SLUG', 'permalink-manager' );
28
+ define( 'PERMALINK_MANAGER_VERSION', '2.2.19.3.1' );
29
  define( 'PERMALINK_MANAGER_FILE', __FILE__ );
30
  define( 'PERMALINK_MANAGER_DIR', untrailingslashit(dirname(__FILE__)) );
31
  define( 'PERMALINK_MANAGER_BASENAME', plugin_basename(__FILE__));
143
  // 2. Globals used to display additional content (eg. alerts)
144
  global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
145
 
146
+ $this->permalink_manager_alerts = $permalink_manager_alerts = apply_filters('permalink_manager_alerts', array());
147
  $this->permalink_manager_before_sections_html = $permalink_manager_before_sections_html = apply_filters('permalink_manager_before_sections', '');
148
  $this->permalink_manager_after_sections_html = $permalink_manager_after_sections_html = apply_filters('permalink_manager_after_sections', '');
149
  }
182
  'disable_slug_sanitization' => 0,
183
  'keep_accents' => 0,
184
  'partial_disable' => array(
185
+ 'post_types' => array('attachment', 'tribe_events', 'e-landing-page')
186
  ),
187
  'ignore_drafts' => 1,
188
  'edit_uris_cap' => 'publish_posts',
273
  if(!empty($permalink_manager_unfiltered_options)) {
274
  update_option('permalink-manager', $permalink_manager_unfiltered_options);
275
  }
276
+
277
+ // Remove obsolete 'permalink-manager-alerts' from wp_options table
278
+ if(get_option('permalink-manager-alerts')) {
279
+ delete_option('permalink-manager-alerts');
280
+ }
281
  }
282
 
283
  /**