Version Description
Download this release
Release Info
Developer | mbis |
Plugin | Permalink Manager Lite |
Version | 2.2.7.2 |
Comparing to | |
See all releases |
Code changes from version 2.2.5 to 2.2.7.2
- README.txt +45 -14
- includes/core/permalink-manager-admin-functions.php +43 -12
- includes/core/permalink-manager-core-functions.php +183 -175
- includes/core/permalink-manager-debug.php +198 -0
- includes/core/permalink-manager-helper-functions.php +8 -3
- includes/core/permalink-manager-third-parties.php +114 -82
- includes/core/permalink-manager-uri-functions-post.php +3 -0
- includes/views/permalink-manager-settings.php +24 -12
- includes/views/permalink-manager-upgrade.php +0 -64
- languages/permalink-manager.pot +658 -636
- out/permalink-manager-admin.js +80 -26
- permalink-manager.php +10 -6
README.txt
CHANGED
@@ -3,13 +3,13 @@ Contributors: mbis
|
|
3 |
Donate link: https://www.paypal.me/Bismit
|
4 |
License: GPLv3
|
5 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
6 |
-
Tags:
|
7 |
Requires at least: 4.4.0
|
8 |
Requires PHP: 5.4
|
9 |
-
Tested up to: 5.2.
|
10 |
-
Stable tag: 2.2.
|
11 |
|
12 |
-
|
13 |
|
14 |
== Description ==
|
15 |
|
@@ -17,6 +17,8 @@ Permalink Manager is a most advanced and highly rated Wordpress permalink plugin
|
|
17 |
|
18 |
The plugin supports all custom post types & custom taxonomies and popular 3rd party plugins including WooCommerce, Yoast SEO, WPML, and Polylang. To improve SEO performance even more, the plugin settings provide a possibility to disable the canonical redirect (used natively by Wordpress) and control the trailing slashes settings.
|
19 |
|
|
|
|
|
20 |
= All features =
|
21 |
|
22 |
* **Edit full permalinks**<br/>A completely custom permalink can be set for each post, page and public custom post type individually *(categories, tags & custom taxonomies terms permalinks can be edited in Permalink Manager Pro)*
|
@@ -29,8 +31,10 @@ The plugin supports all custom post types & custom taxonomies and popular 3rd pa
|
|
29 |
* **Trailing slashes settings**<br/>They can be forced or removed from all permalinks.
|
30 |
|
31 |
= Need additional features & priority support? =
|
32 |
-
Buy <a href="https://permalinkmanager.pro?utm_source=wordpress">Permalink Manager Pro here</a>.
|
33 |
-
|
|
|
|
|
34 |
= Additional features available in Permalink Manager Pro =
|
35 |
|
36 |
* **Taxonomies**<br/>Full support for taxonomies (categories, tags & custom taxonomies).
|
@@ -66,16 +70,25 @@ To display the URI editor metabox click on gray "Permalink Editor" displayed bel
|
|
66 |
|
67 |
== Frequently Asked Questions ==
|
68 |
|
69 |
-
=
|
70 |
-
|
71 |
|
72 |
-
|
|
|
|
|
|
|
|
|
73 |
|
74 |
-
=
|
75 |
-
|
76 |
|
77 |
-
=
|
78 |
-
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
== Screenshots ==
|
81 |
|
@@ -90,9 +103,27 @@ A. Currently there is no 100% guarantee that Permalink Manager will work correct
|
|
90 |
|
91 |
== Changelog ==
|
92 |
|
93 |
-
= 2.2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
* Minor code improvements
|
95 |
* Yoast SEO Breadcrumbs - further improvements
|
|
|
|
|
96 |
|
97 |
= 2.2.3 =
|
98 |
* Code improvements for WP All Import integration functions
|
3 |
Donate link: https://www.paypal.me/Bismit
|
4 |
License: GPLv3
|
5 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
6 |
+
Tags: permalinks, custom permalinks, translate permalinks, woocommerce permalinks
|
7 |
Requires at least: 4.4.0
|
8 |
Requires PHP: 5.4
|
9 |
+
Tested up to: 5.2.3
|
10 |
+
Stable tag: 2.2.7.2
|
11 |
|
12 |
+
Permalink Manager Pro allows to easily change full URL addresses of posts, pages, custom post types, terms and WooCommerce links. You can also set different permalink formats per language or bulk change the URLs.
|
13 |
|
14 |
== Description ==
|
15 |
|
17 |
|
18 |
The plugin supports all custom post types & custom taxonomies and popular 3rd party plugins including WooCommerce, Yoast SEO, WPML, and Polylang. To improve SEO performance even more, the plugin settings provide a possibility to disable the canonical redirect (used natively by Wordpress) and control the trailing slashes settings.
|
19 |
|
20 |
+
<a href="https://permalinkmanager.pro/docs/?utm_source=wordpressorg">Documentation</a> | <a href="https://permalinkmanager.pro/buy-permalink-manager-pro/?utm_source=wordpressorg">Permalink Manager Pro</a>
|
21 |
+
|
22 |
= All features =
|
23 |
|
24 |
* **Edit full permalinks**<br/>A completely custom permalink can be set for each post, page and public custom post type individually *(categories, tags & custom taxonomies terms permalinks can be edited in Permalink Manager Pro)*
|
31 |
* **Trailing slashes settings**<br/>They can be forced or removed from all permalinks.
|
32 |
|
33 |
= Need additional features & priority support? =
|
34 |
+
Buy <a href="https://permalinkmanager.pro?utm_source=wordpress">Permalink Manager Pro here</a>.
|
35 |
+
|
36 |
+
https://www.youtube.com/watch?v=KMOtAK5c7t8
|
37 |
+
|
38 |
= Additional features available in Permalink Manager Pro =
|
39 |
|
40 |
* **Taxonomies**<br/>Full support for taxonomies (categories, tags & custom taxonomies).
|
70 |
|
71 |
== Frequently Asked Questions ==
|
72 |
|
73 |
+
= Can I define different permalink formats per each language.
|
74 |
+
Yes, it is possible if you are using either WPML or Polylang. You can find <a href="https://permalinkmanager.pro/docs/tutorials/how-to-translate-permalinks/">the full instructions here</a>.
|
75 |
|
76 |
+
= Can I use Permalink Manager to change the terms permalinks (eg. post or product categories)?
|
77 |
+
This feature is available only in Permalink Manager Pro.
|
78 |
+
|
79 |
+
= Will the old permalink automatically redirect the new custom ones?
|
80 |
+
Yes, Permalink Manager will automatically redirect the native permalinks (used when the plugin is disabled or before it was activated) to the actual, custom permalinks.
|
81 |
|
82 |
+
= Can I add custom fields to the permalinks?
|
83 |
+
This feature is available in paid version of plugin. Please go <a href="https://permalinkmanager.pro/docs/tutorials/how-to-use-custom-fields-inside-wordpress-permalinks/">here for more details</a>.
|
84 |
|
85 |
+
= Does this plugin support Buddypress?
|
86 |
+
Currently there is no 100% guarantee that Permalink Manager will work correctly with Buddypress.
|
87 |
+
|
88 |
+
= Can I delete/disable Permalink Manager after the permalinks are updated? =
|
89 |
+
Yes, if you used Permalink Manager only to regenerate the slugs (native post names). Please note that if you use custom permalinks (that differ from the native ones), they will no longer be used after the plugin is disabled.
|
90 |
+
|
91 |
+
It is because Permalink Manager overwrites one of the core Wordpress functionalities to bypass the rewrite rules ("regular expressions" to detect the posts/pages/taxonomies/etc. and another parameters from the URL) by using the array of custom permalinks (you can check them in "Debug" tab) that are used only by my plugin.
|
92 |
|
93 |
== Screenshots ==
|
94 |
|
103 |
|
104 |
== Changelog ==
|
105 |
|
106 |
+
= 2.2.7.1/2.2.7.2 =
|
107 |
+
* Hotfix for PHP Fatal error
|
108 |
+
* Hotfix for sanitization function: The dashes are no longer removed from custom permalinks.
|
109 |
+
|
110 |
+
= 2.2.7 =
|
111 |
+
* Force 404 for draft posts (for non-logged-in users)
|
112 |
+
* New feature: Force HTTPs/WWW in URLs
|
113 |
+
* New setting fields: "URI Editor role capability" & "Force HTTPS in URLs"
|
114 |
+
* Minor improvements
|
115 |
+
|
116 |
+
= 2.2.6 =
|
117 |
+
* More debug functions added
|
118 |
+
* Better support for Hebrew letters
|
119 |
+
* Support for location custom fields in WP Store Locator - CSV Manager plugin
|
120 |
+
* Improved support for Gutenberg editor (reported by Cedric Busuttil)
|
121 |
+
|
122 |
+
= 2.2.4/2.2.5=
|
123 |
* Minor code improvements
|
124 |
* Yoast SEO Breadcrumbs - further improvements
|
125 |
+
* Hotfix for Toolset custom fields support (Permalink Manager Pro)
|
126 |
+
* Hotfix for Polylang URL modes
|
127 |
|
128 |
= 2.2.3 =
|
129 |
* Code improvements for WP All Import integration functions
|
includes/core/permalink-manager-admin-functions.php
CHANGED
@@ -26,8 +26,9 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
26 |
* Hooks that should be triggered with "admin_init"
|
27 |
*/
|
28 |
public function init() {
|
29 |
-
// Additional
|
30 |
add_filter( "plugin_action_links_{$this->plugin_basename}", array($this, "plugins_page_links") );
|
|
|
31 |
|
32 |
// Detect current section
|
33 |
$this->sections = apply_filters('permalink_manager_sections', array());
|
@@ -154,10 +155,30 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
154 |
* Additional links on "Plugins" page
|
155 |
*/
|
156 |
public function plugins_page_links($links) {
|
157 |
-
$
|
158 |
-
|
159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
}
|
|
|
161 |
return $links;
|
162 |
}
|
163 |
|
@@ -535,7 +556,7 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
535 |
|
536 |
$html = "<div id=\"permalink-manager\" class=\"wrap\">";
|
537 |
|
538 |
-
$donate_link =
|
539 |
$html .= sprintf("<h2 id=\"plugin-name-heading\">%s <a href=\"http://maciejbis.net\" class=\"author-link\" target=\"_blank\">%s</a> %s</h2>", PERMALINK_MANAGER_PLUGIN_NAME, __("by Maciej Bis", "permalink-manager"), $donate_link);
|
540 |
|
541 |
// Display the tab navigation
|
@@ -544,8 +565,11 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
544 |
$active_class = ($this->active_section === $section_name) ? 'nav-tab-active nav-tab' : 'nav-tab';
|
545 |
$section_url = $this->get_admin_url("§ion={$section_name}");
|
546 |
|
547 |
-
$html .= "<a href=\"
|
548 |
}
|
|
|
|
|
|
|
549 |
$html .= "</div>";
|
550 |
|
551 |
// Now display the active section
|
@@ -724,6 +748,12 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
724 |
public static function display_uri_box($element, $gutenberg = false) {
|
725 |
global $permalink_manager_options, $permalink_manager_uris;
|
726 |
|
|
|
|
|
|
|
|
|
|
|
|
|
727 |
if(!empty($element->ID)) {
|
728 |
$id = $element_id = $element->ID;
|
729 |
$native_slug = $element->post_name;
|
@@ -872,21 +902,22 @@ class Permalink_Manager_Admin_Functions extends Permalink_Manager_Class {
|
|
872 |
global $permalink_manager_options, $permalink_manager_redirects;
|
873 |
|
874 |
// Heading
|
875 |
-
$html =
|
876 |
-
|
|
|
|
|
877 |
__("Manage redirects", "permalink-manager")
|
878 |
);
|
879 |
|
880 |
$html .= "<div id=\"redirect-panel-inside\">";
|
881 |
-
|
882 |
-
// Table
|
883 |
-
if(Permalink_Manager_Admin_Functions::is_pro_active()) {
|
884 |
$html .= Permalink_Manager_Pro_Addons::display_redirect_form($element_id);
|
885 |
} else {
|
886 |
$html .= self::pro_text(true);
|
887 |
}
|
|
|
888 |
|
889 |
-
$html .= "</div
|
890 |
|
891 |
return $html;
|
892 |
}
|
26 |
* Hooks that should be triggered with "admin_init"
|
27 |
*/
|
28 |
public function init() {
|
29 |
+
// Additional links in "Plugins" page
|
30 |
add_filter( "plugin_action_links_{$this->plugin_basename}", array($this, "plugins_page_links") );
|
31 |
+
add_filter( "plugin_row_meta", array($this, "plugins_page_meta"), 10, 2 );
|
32 |
|
33 |
// Detect current section
|
34 |
$this->sections = apply_filters('permalink_manager_sections', array());
|
155 |
* Additional links on "Plugins" page
|
156 |
*/
|
157 |
public function plugins_page_links($links) {
|
158 |
+
$new_links = array(
|
159 |
+
sprintf('<a href="%s">%s</a>', $this->get_admin_url(), __( 'URI Editor', 'permalink-manager' )),
|
160 |
+
sprintf('<a href="%s">%s</a>', $this->get_admin_url('§ion=settings'), __( 'Settings', 'permalink-manager' )),
|
161 |
+
);
|
162 |
+
|
163 |
+
return array_merge($links, $new_links);
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Additional meta links on "Plugins" page
|
168 |
+
*/
|
169 |
+
public function plugins_page_meta($links, $file) {
|
170 |
+
if($file == PERMALINK_MANAGER_BASENAME) {
|
171 |
+
$new_links = array(
|
172 |
+
'doc' => sprintf('<a href="%s?utm_source=plugin_admin_page" target="_blank">%s</a>', 'https://permalinkmanager.pro/docs/', __( 'Documentation', 'permalink-manager' ))
|
173 |
+
);
|
174 |
+
|
175 |
+
if(!defined('PERMALINK_MANAGER_PRO')) {
|
176 |
+
$new_links['upgrade'] = sprintf('<a href="%s?utm_source=plugin_admin_page" target="_blank"><strong>%s</strong></a>', PERMALINK_MANAGER_WEBSITE, __( 'Buy Permalink Manager Pro', 'permalink-manager' ));
|
177 |
+
}
|
178 |
+
|
179 |
+
$links = array_merge($links, $new_links);
|
180 |
}
|
181 |
+
|
182 |
return $links;
|
183 |
}
|
184 |
|
556 |
|
557 |
$html = "<div id=\"permalink-manager\" class=\"wrap\">";
|
558 |
|
559 |
+
$donate_link = (Permalink_Manager_Admin_Functions::is_pro_active()) ? "" : sprintf("<a href=\"%s\" target=\"_blank\" class=\"page-title-action\">%s</a>", PERMALINK_MANAGER_DONATE, __("Donate", "permalink-manager"));
|
560 |
$html .= sprintf("<h2 id=\"plugin-name-heading\">%s <a href=\"http://maciejbis.net\" class=\"author-link\" target=\"_blank\">%s</a> %s</h2>", PERMALINK_MANAGER_PLUGIN_NAME, __("by Maciej Bis", "permalink-manager"), $donate_link);
|
561 |
|
562 |
// Display the tab navigation
|
565 |
$active_class = ($this->active_section === $section_name) ? 'nav-tab-active nav-tab' : 'nav-tab';
|
566 |
$section_url = $this->get_admin_url("§ion={$section_name}");
|
567 |
|
568 |
+
$html .= sprintf("<a href=\"%s\" class=\"%s section_%s\">%s</a>", $section_url, $active_class, $section_name, $section_properties['name']);
|
569 |
}
|
570 |
+
|
571 |
+
// Upgrade to Pro version
|
572 |
+
$html .= (Permalink_Manager_Admin_Functions::is_pro_active() == false) ? sprintf("<a href=\"%s\" target=\"_blank\" class=\"nav-tab section_upgrade\">%s</a>", 'https://permalinkmanager.pro/buy-permalink-manager-pro/?utm_source=plugin_upgrade', __('Upgrade to PRO', 'permalink-manager')) : '';
|
573 |
$html .= "</div>";
|
574 |
|
575 |
// Now display the active section
|
748 |
public static function display_uri_box($element, $gutenberg = false) {
|
749 |
global $permalink_manager_options, $permalink_manager_uris;
|
750 |
|
751 |
+
// Check the user capabilities
|
752 |
+
$edit_uris_cap = (!empty($permalink_manager_options['general']['edit_uris_cap'])) ? $permalink_manager_options['general']['edit_uris_cap'] : 'publish_posts';
|
753 |
+
if(!current_user_can($edit_uris_cap)) {
|
754 |
+
return;
|
755 |
+
}
|
756 |
+
|
757 |
if(!empty($element->ID)) {
|
758 |
$id = $element_id = $element->ID;
|
759 |
$native_slug = $element->post_name;
|
902 |
global $permalink_manager_options, $permalink_manager_redirects;
|
903 |
|
904 |
// Heading
|
905 |
+
$html = "<div class=\"permalink-manager redirects-row redirects-panel columns-container\">";
|
906 |
+
|
907 |
+
$html .= sprintf(
|
908 |
+
"<div><a class=\"button\" href=\"#\" id=\"toggle-redirect-panel\">%s</a></span></div>",
|
909 |
__("Manage redirects", "permalink-manager")
|
910 |
);
|
911 |
|
912 |
$html .= "<div id=\"redirect-panel-inside\">";
|
913 |
+
if(Permalink_Manager_Admin_Functions::is_pro_active() && class_exists('Permalink_Manager_Pro_Addons')) {
|
|
|
|
|
914 |
$html .= Permalink_Manager_Pro_Addons::display_redirect_form($element_id);
|
915 |
} else {
|
916 |
$html .= self::pro_text(true);
|
917 |
}
|
918 |
+
$html .= "</div>";
|
919 |
|
920 |
+
$html .= "</div>";
|
921 |
|
922 |
return $html;
|
923 |
}
|
includes/core/permalink-manager-core-functions.php
CHANGED
@@ -54,7 +54,7 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
54 |
* The most important Permalink Manager function
|
55 |
*/
|
56 |
public static function detect_post($query, $request_url = false, $return_object = false) {
|
57 |
-
global $wpdb, $wp, $wp_rewrite, $permalink_manager, $permalink_manager_uris, $wp_filter, $permalink_manager_options, $pm_query
|
58 |
|
59 |
// Check if the array with custom URIs is set
|
60 |
//if(!(is_array($permalink_manager_uris)) || (empty($query) && empty($request_url))) return $query;
|
@@ -216,7 +216,8 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
216 |
|
217 |
//$query["term"] = $final_uri;
|
218 |
$query["term"] = $term->slug;
|
219 |
-
|
|
|
220 |
} else {
|
221 |
$broken_uri = true;
|
222 |
}
|
@@ -255,9 +256,18 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
255 |
|
256 |
// Alter query parameters + support drafts URLs
|
257 |
if($post_to_load->post_status == 'draft' || empty($final_uri)) {
|
258 |
-
|
259 |
-
|
260 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
} else if($post_type == 'page') {
|
262 |
$query['pagename'] = $final_uri;
|
263 |
// $query['post_type'] = $post_type;
|
@@ -336,17 +346,7 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
-
* 6.
|
340 |
-
*/
|
341 |
-
$home_url_has_www = (strpos($raw_home_url, 'www.') !== false) ? true : false;
|
342 |
-
$requested_url_has_www = (strpos($_SERVER['HTTP_HOST'], 'www.') !== false) ? true : false;
|
343 |
-
|
344 |
-
if($home_url_has_www != $requested_url_has_www) {
|
345 |
-
unset($query['do_not_redirect']);
|
346 |
-
}
|
347 |
-
|
348 |
-
/**
|
349 |
-
* 7. Set global with detected item id
|
350 |
*/
|
351 |
if(!empty($element_id)) {
|
352 |
$pm_query['id'] = $element_id;
|
@@ -357,31 +357,16 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
357 |
}
|
358 |
|
359 |
/**
|
360 |
-
*
|
361 |
*/
|
362 |
-
if(
|
363 |
-
$
|
364 |
-
|
365 |
-
$
|
366 |
-
|
367 |
-
|
368 |
-
if(isset($post_type)) {
|
369 |
-
$debug_info['post_type'] = $post_type;
|
370 |
-
} else if(isset($term_taxonomy)) {
|
371 |
-
$debug_info['taxonomy'] = $term_taxonomy;
|
372 |
-
}
|
373 |
-
|
374 |
-
// License key info
|
375 |
-
if(class_exists('Permalink_Manager_Pro_Functions')) {
|
376 |
-
$license_key = $permalink_manager->functions['pro-functions']->get_license_key();
|
377 |
-
|
378 |
-
// Mask the license key
|
379 |
-
$debug_info['license_key'] = preg_replace('/([^-]+)-([^-]+)-([^-]+)-([^-]+)$/', '***-***-$3', $license_key);
|
380 |
-
}
|
381 |
-
|
382 |
-
$debug_txt = sprintf("<pre style=\"display:block;\">%s</pre>", print_r($debug_info, true));
|
383 |
-
wp_die($debug_txt);
|
384 |
}
|
|
|
385 |
|
386 |
if($return_object && !empty($term)) {
|
387 |
return $term;
|
@@ -426,24 +411,30 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
426 |
/**
|
427 |
* Display 404 if requested page does not exist in pagination
|
428 |
*/
|
429 |
-
|
430 |
-
|
431 |
|
432 |
-
|
433 |
-
|
434 |
|
435 |
// 2. Check if post object is defined
|
436 |
-
|
|
|
|
|
|
|
437 |
|
438 |
-
|
439 |
-
|
440 |
-
$current_page = (empty($wp_query->query_vars['page']) && !empty($wp_query->query_vars['paged'])) ? $wp_query->query_vars['paged'] : $current_page;
|
441 |
|
442 |
-
|
443 |
-
|
|
|
|
|
|
|
|
|
444 |
|
445 |
// 5. Block non-existent pages (Force 404 error)
|
446 |
-
|
447 |
$wp_query->is_404 = true;
|
448 |
$wp_query->query = $wp_query->queried_object = $wp_query->queried_object_id = null;
|
449 |
$wp_query->set_404();
|
@@ -453,25 +444,14 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
453 |
include(get_query_template('404'));
|
454 |
|
455 |
die();
|
456 |
-
|
457 |
-
|
458 |
|
459 |
/**
|
460 |
* Redirects
|
461 |
*/
|
462 |
function new_uri_redirect_and_404() {
|
463 |
-
global $wp_query, $permalink_manager_uris, $permalink_manager_redirects, $permalink_manager_external_redirects, $permalink_manager_options, $wp, $pm_query
|
464 |
-
|
465 |
-
// Do not redirect on author pages & front page
|
466 |
-
if(is_author() || is_front_page() || is_home() || is_feed()) { return false; }
|
467 |
-
|
468 |
-
// Unset 404 if custom URI is detected
|
469 |
-
if(isset($pm_query['id'])) {
|
470 |
-
$wp_query->is_404 = false;
|
471 |
-
}
|
472 |
-
|
473 |
-
// Sometimes $wp_query indicates the wrong object if requested directly
|
474 |
-
$queried_object = get_queried_object();
|
475 |
|
476 |
// Get the redirection mode & trailing slashes settings
|
477 |
$redirect_mode = (!empty($permalink_manager_options['general']['redirect'])) ? $permalink_manager_options['general']['redirect'] : false;
|
@@ -479,162 +459,190 @@ class Permalink_Manager_Core_Functions extends Permalink_Manager_Class {
|
|
479 |
$trailing_slashes_redirect_mode = (!empty($permalink_manager_options['general']['trailing_slashes_redirect'])) ? $permalink_manager_options['general']['trailing_slashes_redirect'] : 301;
|
480 |
$redirect_type = '-';
|
481 |
|
482 |
-
// Get query string & URI
|
483 |
-
$query_string = $_SERVER['QUERY_STRING'];
|
484 |
-
$old_uri = $_SERVER['REQUEST_URI'];
|
485 |
-
|
486 |
// Get home URL
|
487 |
$home_url = rtrim(get_option('home'), "/");
|
488 |
$home_dir = parse_url($home_url, PHP_URL_PATH);
|
489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
// Fix for WP installed in directories (remove the directory name from the URI)
|
491 |
if(!empty($home_dir)) {
|
492 |
$home_dir_regex = preg_quote(trim($home_dir), "/");
|
493 |
$old_uri = preg_replace("/{$home_dir_regex}/", "", $old_uri, 1);
|
494 |
}
|
495 |
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
$
|
|
|
|
|
501 |
|
502 |
-
|
503 |
-
|
504 |
-
$wp_query->query_vars['do_not_redirect'] = 0;
|
505 |
|
506 |
-
|
507 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
}
|
509 |
-
}
|
510 |
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
|
|
516 |
|
517 |
-
|
518 |
-
|
|
|
519 |
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
|
|
|
|
|
|
532 |
}
|
533 |
}
|
|
|
|
|
534 |
}
|
535 |
|
536 |
-
|
537 |
-
|
538 |
|
539 |
-
|
540 |
-
|
|
|
|
|
541 |
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
|
|
|
|
546 |
|
547 |
-
|
548 |
-
|
549 |
-
// Ignore posts with specific statuses
|
550 |
-
if(!(empty($queried_object->post_status)) && in_array($queried_object->post_status, array('draft', 'pending', 'auto-draft', 'future'))) {
|
551 |
-
return '';
|
552 |
-
}
|
553 |
|
554 |
-
|
555 |
-
|
|
|
|
|
|
|
|
|
|
|
556 |
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
// Affect only terms with custom URI and old URIs
|
561 |
-
else if(!empty($queried_object->term_id) && isset($permalink_manager_uris["tax-{$queried_object->term_id}"]) && defined('PERMALINK_MANAGER_PRO')) {
|
562 |
-
// Check if taxonomy is allowed
|
563 |
-
if(Permalink_Manager_Helper_Functions::is_disabled($queried_object->taxonomy, "taxonomy")) { return ''; }
|
564 |
|
565 |
-
|
566 |
-
|
567 |
-
}
|
568 |
|
569 |
-
|
570 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
571 |
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
// Check if $old_uri ends with slash or not
|
577 |
-
$ends_with_slash = (substr($old_uri, -1) == "/") ? true : false;
|
578 |
-
$trailing_slashes_mode = (preg_match("/.*\.([a-zA-Z]{3,4})\/?$/", $old_uri) && $trailing_slashes_mode == 10) ? 20 : $trailing_slashes_mode;
|
579 |
-
|
580 |
-
// Ignore empty URIs
|
581 |
-
if($old_uri != "/") {
|
582 |
-
// Remove the trailing slashes (and add them again if needed below)
|
583 |
-
$old_uri = trim($old_uri, "/");
|
584 |
-
$correct_permalink = (!empty($correct_permalink)) ? trim($correct_permalink, "/") : "";
|
585 |
-
|
586 |
-
// 2A. Force trailing slashes
|
587 |
-
if($trailing_slashes_mode == 10 && $ends_with_slash == false) {
|
588 |
-
$correct_permalink = (!empty($correct_permalink)) ? "{$correct_permalink}/" : "{$home_url}/{$old_uri}/";
|
589 |
-
}
|
590 |
-
// 2B. Remove trailing slashes
|
591 |
-
else if($trailing_slashes_mode == 20 && $ends_with_slash == true) {
|
592 |
-
$correct_permalink = (!empty($correct_permalink)) ? $correct_permalink : "{$home_url}/{$old_uri}";
|
593 |
-
$correct_permalink = trim($correct_permalink, "/");
|
594 |
}
|
595 |
|
596 |
-
|
597 |
-
if(($trailing_slashes_mode == 20 && $ends_with_slash == true) || ($trailing_slashes_mode == 10 && $ends_with_slash == false)) {
|
598 |
-
$redirect_mode = $trailing_slashes_redirect_mode;
|
599 |
-
}
|
600 |
}
|
601 |
|
602 |
-
|
603 |
-
|
|
|
|
|
|
|
|
|
|
|
604 |
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
|
|
|
|
|
|
|
|
|
|
611 |
}
|
612 |
|
613 |
/**
|
614 |
-
*
|
615 |
*/
|
616 |
-
|
617 |
-
$
|
618 |
-
$
|
|
|
|
|
619 |
|
620 |
-
$
|
|
|
|
|
|
|
621 |
}
|
622 |
|
623 |
/**
|
624 |
-
*
|
625 |
*/
|
626 |
-
|
627 |
-
$debug_info['query_vars'] = $wp_query->query_vars;
|
628 |
-
$debug_info['redirect_url'] = (!empty($correct_permalink)) ? $correct_permalink : '-';
|
629 |
-
$debug_info['redirect_mode'] = (!empty($redirect_mode)) ? $redirect_mode : "-";
|
630 |
-
$debug_info['queried_object'] = (!empty($queried_object)) ? $queried_object : "-";
|
631 |
-
|
632 |
-
$debug_txt = sprintf("<pre style=\"display:block;\">%s</pre>", print_r($debug_info, true));
|
633 |
-
wp_die($debug_txt);
|
634 |
-
}
|
635 |
|
636 |
/**
|
637 |
-
*
|
638 |
*/
|
639 |
if(!empty($correct_permalink) && is_string($correct_permalink) && !empty($redirect_mode)) {
|
640 |
// Allow redirect
|
54 |
* The most important Permalink Manager function
|
55 |
*/
|
56 |
public static function detect_post($query, $request_url = false, $return_object = false) {
|
57 |
+
global $wpdb, $wp, $wp_rewrite, $permalink_manager, $permalink_manager_uris, $wp_filter, $permalink_manager_options, $pm_query;
|
58 |
|
59 |
// Check if the array with custom URIs is set
|
60 |
//if(!(is_array($permalink_manager_uris)) || (empty($query) && empty($request_url))) return $query;
|
216 |
|
217 |
//$query["term"] = $final_uri;
|
218 |
$query["term"] = $term->slug;
|
219 |
+
//$query[$query_parameter] = $final_uri;
|
220 |
+
$query[$query_parameter] = $term->slug;
|
221 |
} else {
|
222 |
$broken_uri = true;
|
223 |
}
|
256 |
|
257 |
// Alter query parameters + support drafts URLs
|
258 |
if($post_to_load->post_status == 'draft' || empty($final_uri)) {
|
259 |
+
if(is_user_logged_in()) {
|
260 |
+
$query['p'] = $element_id;
|
261 |
+
$query['preview'] = true;
|
262 |
+
$query['post_type'] = $post_type;
|
263 |
+
} else if($post_to_load->post_status == 'draft') {
|
264 |
+
$query['pagename'] = '-';
|
265 |
+
$query['error'] = '404';
|
266 |
+
|
267 |
+
$element_id = 0;
|
268 |
+
} else {
|
269 |
+
$query = $old_query;
|
270 |
+
}
|
271 |
} else if($post_type == 'page') {
|
272 |
$query['pagename'] = $final_uri;
|
273 |
// $query['post_type'] = $post_type;
|
346 |
}
|
347 |
|
348 |
/**
|
349 |
+
* 6. Set global with detected item id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
*/
|
351 |
if(!empty($element_id)) {
|
352 |
$pm_query['id'] = $element_id;
|
357 |
}
|
358 |
|
359 |
/**
|
360 |
+
* 7. Debug data
|
361 |
*/
|
362 |
+
if(!empty($taxonomy)) {
|
363 |
+
$content_type = "Taxonomy: {$term_taxonomy}";
|
364 |
+
} else if(!empty($post_type)) {
|
365 |
+
$content_type = "Post type: {$post_type}";
|
366 |
+
} else {
|
367 |
+
$content_type = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
}
|
369 |
+
$query = apply_filters('permalink_manager_filter_query', $query, $old_query, $uri_parts, $pm_query, $content_type);
|
370 |
|
371 |
if($return_object && !empty($term)) {
|
372 |
return $term;
|
411 |
/**
|
412 |
* Display 404 if requested page does not exist in pagination
|
413 |
*/
|
414 |
+
function fix_pagination_pages() {
|
415 |
+
global $wp_query;
|
416 |
|
417 |
+
// 1. Get the queried object
|
418 |
+
$post = get_queried_object();
|
419 |
|
420 |
// 2. Check if post object is defined
|
421 |
+
if(!empty($post->post_type)) {
|
422 |
+
// 2A. Check if pagination is detected
|
423 |
+
$current_page = (!empty($wp_query->query_vars['page'])) ? $wp_query->query_vars['page'] : 1;
|
424 |
+
$current_page = (empty($wp_query->query_vars['page']) && !empty($wp_query->query_vars['paged'])) ? $wp_query->query_vars['paged'] : $current_page;
|
425 |
|
426 |
+
// 2B. Count post pages
|
427 |
+
$num_pages = substr_count(strtolower($post->post_content), '<!--nextpage-->') + 1;
|
|
|
428 |
|
429 |
+
$is_404 = ($current_page > 1 && ($current_page > $num_pages)) ? true : false;
|
430 |
+
}
|
431 |
+
// 3. Force 404 if no posts are loaded
|
432 |
+
else if(!empty($wp_query->query['paged']) && $wp_query->post_count == 0) {
|
433 |
+
$is_404 = true;
|
434 |
+
}
|
435 |
|
436 |
// 5. Block non-existent pages (Force 404 error)
|
437 |
+
if(!empty($is_404)) {
|
438 |
$wp_query->is_404 = true;
|
439 |
$wp_query->query = $wp_query->queried_object = $wp_query->queried_object_id = null;
|
440 |
$wp_query->set_404();
|
444 |
include(get_query_template('404'));
|
445 |
|
446 |
die();
|
447 |
+
}
|
448 |
+
}
|
449 |
|
450 |
/**
|
451 |
* Redirects
|
452 |
*/
|
453 |
function new_uri_redirect_and_404() {
|
454 |
+
global $wp_query, $permalink_manager_uris, $permalink_manager_redirects, $permalink_manager_external_redirects, $permalink_manager_options, $wp, $pm_query;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
455 |
|
456 |
// Get the redirection mode & trailing slashes settings
|
457 |
$redirect_mode = (!empty($permalink_manager_options['general']['redirect'])) ? $permalink_manager_options['general']['redirect'] : false;
|
459 |
$trailing_slashes_redirect_mode = (!empty($permalink_manager_options['general']['trailing_slashes_redirect'])) ? $permalink_manager_options['general']['trailing_slashes_redirect'] : 301;
|
460 |
$redirect_type = '-';
|
461 |
|
|
|
|
|
|
|
|
|
462 |
// Get home URL
|
463 |
$home_url = rtrim(get_option('home'), "/");
|
464 |
$home_dir = parse_url($home_url, PHP_URL_PATH);
|
465 |
|
466 |
+
// Set up $correct_permalink variable
|
467 |
+
$correct_permalink = '';
|
468 |
+
|
469 |
+
// Get query string & URI
|
470 |
+
$query_string = $_SERVER['QUERY_STRING'];
|
471 |
+
$old_uri = $_SERVER['REQUEST_URI'];
|
472 |
+
|
473 |
// Fix for WP installed in directories (remove the directory name from the URI)
|
474 |
if(!empty($home_dir)) {
|
475 |
$home_dir_regex = preg_quote(trim($home_dir), "/");
|
476 |
$old_uri = preg_replace("/{$home_dir_regex}/", "", $old_uri, 1);
|
477 |
}
|
478 |
|
479 |
+
// Do not use custom redirects on author pages & front page
|
480 |
+
if(!is_author() && !is_front_page() && !is_home() && !is_feed()) {
|
481 |
+
|
482 |
+
// Unset 404 if custom URI is detected
|
483 |
+
if(isset($pm_query['id'])) {
|
484 |
+
$wp_query->is_404 = false;
|
485 |
+
}
|
486 |
|
487 |
+
// Sometimes $wp_query indicates the wrong object if requested directly
|
488 |
+
$queried_object = get_queried_object();
|
|
|
489 |
|
490 |
+
/**
|
491 |
+
* 1A. External redirect
|
492 |
+
*/
|
493 |
+
if(!empty($pm_query['id']) && !empty($permalink_manager_external_redirects[$pm_query['id']])) {
|
494 |
+
$external_url = $permalink_manager_external_redirects[$pm_query['id']];
|
495 |
+
|
496 |
+
if(filter_var($external_url, FILTER_VALIDATE_URL)) {
|
497 |
+
// Allow redirect
|
498 |
+
$wp_query->query_vars['do_not_redirect'] = 0;
|
499 |
+
|
500 |
+
wp_redirect($external_url, 301);
|
501 |
+
exit();
|
502 |
+
}
|
503 |
}
|
|
|
504 |
|
505 |
+
/**
|
506 |
+
* 1B. Custom redirects
|
507 |
+
*/
|
508 |
+
if(empty($wp_query->query_vars['do_not_redirect']) && !empty($permalink_manager_redirects) && is_array($permalink_manager_redirects) && !empty($wp->request) && !empty($pm_query['uri'])) {
|
509 |
+
$uri = $pm_query['uri'];
|
510 |
+
$endpoint_value = $pm_query['endpoint_value'];
|
511 |
|
512 |
+
// Make sure that URIs with non-ASCII characters are also detected + Check the URLs that end with number
|
513 |
+
$decoded_url = urldecode($uri);
|
514 |
+
$endpoint_url = "{$uri}/{$endpoint_value}";
|
515 |
|
516 |
+
// Check if the URI is not assigned to any post/term's redirects
|
517 |
+
foreach($permalink_manager_redirects as $element => $redirects) {
|
518 |
+
if(!is_array($redirects)) { continue; }
|
519 |
|
520 |
+
if(in_array($uri, $redirects) || in_array($decoded_url, $redirects) || (is_numeric($endpoint_value) && in_array($endpoint_url, $redirects))) {
|
521 |
+
|
522 |
+
// Post is detected
|
523 |
+
if(is_numeric($element)) {
|
524 |
+
$correct_permalink = get_permalink($element);
|
525 |
+
}
|
526 |
+
// Term is detected
|
527 |
+
else {
|
528 |
+
$term_id = intval(preg_replace("/[^0-9]/", "", $element));
|
529 |
+
$correct_permalink = get_term_link($term_id);
|
530 |
+
}
|
531 |
}
|
532 |
}
|
533 |
+
|
534 |
+
$redirect_type = (!empty($correct_permalink)) ? 'custom_redirect' : $redirect_type;
|
535 |
}
|
536 |
|
537 |
+
// Ignore WP-Content links
|
538 |
+
if(!empty($_SERVER['REQUEST_URI']) && (strpos($_SERVER['REQUEST_URI'], '/wp-content') !== false)) { return false; }
|
539 |
|
540 |
+
/**
|
541 |
+
* 1C. Enhance native redirect
|
542 |
+
*/
|
543 |
+
if(empty($wp_query->query_vars['do_not_redirect']) && $redirect_mode && !empty($queried_object) && empty($correct_permalink)) {
|
544 |
|
545 |
+
// Affect only posts with custom URI and old URIs
|
546 |
+
if(!empty($queried_object->ID) && isset($permalink_manager_uris[$queried_object->ID]) && empty($wp_query->query['preview'])) {
|
547 |
+
// Ignore posts with specific statuses
|
548 |
+
if(!(empty($queried_object->post_status)) && in_array($queried_object->post_status, array('draft', 'pending', 'auto-draft', 'future'))) {
|
549 |
+
return '';
|
550 |
+
}
|
551 |
|
552 |
+
// Check if post type is allowed
|
553 |
+
if(Permalink_Manager_Helper_Functions::is_disabled($queried_object->post_type, 'post_type')) { return ''; }
|
|
|
|
|
|
|
|
|
554 |
|
555 |
+
// Get the real URL
|
556 |
+
$correct_permalink = get_permalink($queried_object->ID);
|
557 |
+
}
|
558 |
+
// Affect only terms with custom URI and old URIs
|
559 |
+
else if(!empty($queried_object->term_id) && isset($permalink_manager_uris["tax-{$queried_object->term_id}"]) && defined('PERMALINK_MANAGER_PRO')) {
|
560 |
+
// Check if taxonomy is allowed
|
561 |
+
if(Permalink_Manager_Helper_Functions::is_disabled($queried_object->taxonomy, "taxonomy")) { return ''; }
|
562 |
|
563 |
+
// Get the real URL
|
564 |
+
$correct_permalink = get_term_link($queried_object->term_id, $queried_object->taxonomy);
|
565 |
+
}
|
|
|
|
|
|
|
|
|
566 |
|
567 |
+
$redirect_type = (!empty($correct_permalink)) ? 'native_redirect' : $redirect_type;
|
568 |
+
}
|
|
|
569 |
|
570 |
+
/**
|
571 |
+
* 2. Check trailing slashes (ignore links with query parameters)
|
572 |
+
*/
|
573 |
+
if($trailing_slashes_mode && empty($_SERVER['QUERY_STRING']) && !empty($_SERVER['REQUEST_URI'])) {
|
574 |
+
// Check if $old_uri ends with slash or not
|
575 |
+
$ends_with_slash = (substr($old_uri, -1) == "/") ? true : false;
|
576 |
+
$trailing_slashes_mode = (preg_match("/.*\.([a-zA-Z]{3,4})\/?$/", $old_uri) && $trailing_slashes_mode == 10) ? 20 : $trailing_slashes_mode;
|
577 |
+
|
578 |
+
// Ignore empty URIs
|
579 |
+
if($old_uri != "/") {
|
580 |
+
// Remove the trailing slashes (and add them again if needed below)
|
581 |
+
$old_uri = trim($old_uri, "/");
|
582 |
+
$correct_permalink = (!empty($correct_permalink)) ? trim($correct_permalink, "/") : "";
|
583 |
+
|
584 |
+
// 2A. Force trailing slashes
|
585 |
+
if($trailing_slashes_mode == 10 && $ends_with_slash == false) {
|
586 |
+
$correct_permalink = (!empty($correct_permalink)) ? "{$correct_permalink}/" : "{$home_url}/{$old_uri}/";
|
587 |
+
}
|
588 |
+
// 2B. Remove trailing slashes
|
589 |
+
else if($trailing_slashes_mode == 20 && $ends_with_slash == true) {
|
590 |
+
$correct_permalink = (!empty($correct_permalink)) ? $correct_permalink : "{$home_url}/{$old_uri}";
|
591 |
+
$correct_permalink = trim($correct_permalink, "/");
|
592 |
+
}
|
593 |
|
594 |
+
// Use redirect mode set for trailing slash redirect
|
595 |
+
if(($trailing_slashes_mode == 20 && $ends_with_slash == true) || ($trailing_slashes_mode == 10 && $ends_with_slash == false)) {
|
596 |
+
$redirect_mode = $trailing_slashes_redirect_mode;
|
597 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
598 |
}
|
599 |
|
600 |
+
$redirect_type = (!empty($correct_permalink)) ? 'slash_redirect' : '-';
|
|
|
|
|
|
|
601 |
}
|
602 |
|
603 |
+
/**
|
604 |
+
* 3. Check if URL contains duplicated slashes
|
605 |
+
*/
|
606 |
+
if(!empty($old_uri) && ($old_uri != '/') && preg_match('/\/{2,}/', $old_uri)) {
|
607 |
+
$new_uri = ltrim(preg_replace('/([^:])([\/]+)/', '$1/', $old_uri), "/");
|
608 |
+
$correct_permalink = "{$home_url}/{$new_uri}";
|
609 |
+
}
|
610 |
|
611 |
+
/**
|
612 |
+
* 4. Prevent redirect loop
|
613 |
+
*/
|
614 |
+
if(!empty($correct_permalink) && is_string($correct_permalink) && !empty($wp->request) && !empty($redirect_type) && $redirect_type !== 'slash_redirect') {
|
615 |
+
$current_uri = trim($wp->request, "/");
|
616 |
+
$redirect_uri = trim(parse_url($correct_permalink, PHP_URL_PATH), "/");
|
617 |
+
|
618 |
+
$correct_permalink = ($redirect_uri == $current_uri) ? null : $correct_permalink;
|
619 |
+
}
|
620 |
+
} else {
|
621 |
+
$queried_object = '-';
|
622 |
}
|
623 |
|
624 |
/**
|
625 |
+
* 5. WWW prefix | SSL mismatch redirect
|
626 |
*/
|
627 |
+
if(!empty($permalink_manager_options['general']['sslwww_redirect'])) {
|
628 |
+
$home_url_has_www = (strpos($home_url, 'www.') !== false) ? true : false;
|
629 |
+
$requested_url_has_www = (strpos($_SERVER['HTTP_HOST'], 'www.') !== false) ? true : false;
|
630 |
+
$home_url_has_ssl = (strpos($home_url, 'https') !== false) ? true : false;
|
631 |
+
$requested_url_has_ssl = is_ssl();
|
632 |
|
633 |
+
if(($home_url_has_www !==$requested_url_has_www) || ($home_url_has_ssl !== $requested_url_has_ssl)) {
|
634 |
+
$correct_permalink = "{$home_url}/{$old_uri}";
|
635 |
+
$redirect_type = 'www_redirect';
|
636 |
+
}
|
637 |
}
|
638 |
|
639 |
/**
|
640 |
+
* 6. Debug redirect
|
641 |
*/
|
642 |
+
$correct_permalink = apply_filters('permalink_manager_filter_redirect', $correct_permalink, $redirect_type, $queried_object);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
643 |
|
644 |
/**
|
645 |
+
* 7. Ignore default URIs (or do nothing if redirects are disabled)
|
646 |
*/
|
647 |
if(!empty($correct_permalink) && is_string($correct_permalink) && !empty($redirect_mode)) {
|
648 |
// Allow redirect
|
includes/core/permalink-manager-debug.php
ADDED
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Additional debug functions for "Permalink Manager Pro"
|
5 |
+
*/
|
6 |
+
class Permalink_Manager_Debug_Functions extends Permalink_Manager_Class {
|
7 |
+
|
8 |
+
public function __construct() {
|
9 |
+
add_action('init', array($this, 'debug_data'), 99);
|
10 |
+
}
|
11 |
+
|
12 |
+
public function debug_data() {
|
13 |
+
add_filter('permalink_manager_filter_query', array($this, 'debug_query'), 9, 5);
|
14 |
+
add_filter('permalink_manager_filter_redirect', array($this, 'debug_redirect'), 9, 3);
|
15 |
+
|
16 |
+
self::debug_custom_redirects();
|
17 |
+
self::debug_custom_fields();
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* 1. Used in Permalink_Manager_Core_Functions::detect_post();
|
22 |
+
*/
|
23 |
+
public function debug_query($query, $old_query = null, $uri_parts = null, $pm_query = null, $content_type = null) {
|
24 |
+
global $permalink_manager;
|
25 |
+
|
26 |
+
if(isset($_REQUEST['debug_url'])) {
|
27 |
+
$debug_info['uri_parts'] = $uri_parts;
|
28 |
+
$debug_info['old_query_vars'] = $old_query;
|
29 |
+
$debug_info['new_query_vars'] = $query;
|
30 |
+
$debug_info['pm_query'] = (!empty($pm_query['id'])) ? $pm_query['id'] : "-";
|
31 |
+
$debug_info['content_type'] = (!empty($content_type)) ? $content_type : "-";
|
32 |
+
|
33 |
+
// License key info
|
34 |
+
if(class_exists('Permalink_Manager_Pro_Functions')) {
|
35 |
+
$license_key = $permalink_manager->functions['pro-functions']->get_license_key();
|
36 |
+
|
37 |
+
// Mask the license key
|
38 |
+
$debug_info['license_key'] = preg_replace('/([^-]+)-([^-]+)-([^-]+)-([^-]+)$/', '***-***-$3', $license_key);
|
39 |
+
}
|
40 |
+
|
41 |
+
// Plugin version
|
42 |
+
$debug_info['version'] = PERMALINK_MANAGER_VERSION;
|
43 |
+
|
44 |
+
self::display_debug_data($debug_info);
|
45 |
+
}
|
46 |
+
|
47 |
+
return $query;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* 2. Used in Permalink_Manager_Core_Functions::new_uri_redirect_and_404();
|
52 |
+
*/
|
53 |
+
public function debug_redirect($correct_permalink, $redirect_type, $queried_object) {
|
54 |
+
global $wp_query;
|
55 |
+
|
56 |
+
if(isset($_REQUEST['debug_redirect'])) {
|
57 |
+
$debug_info['query_vars'] = $wp_query->query_vars;
|
58 |
+
$debug_info['redirect_url'] = (!empty($correct_permalink)) ? $correct_permalink : '-';
|
59 |
+
$debug_info['redirect_type'] = (!empty($redirect_type)) ? $redirect_type : "-";
|
60 |
+
$debug_info['queried_object'] = (!empty($queried_object)) ? $queried_object : "-";
|
61 |
+
|
62 |
+
self::display_debug_data($debug_info);
|
63 |
+
}
|
64 |
+
|
65 |
+
return $correct_permalink;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* 3. Outputs a list of native & custom redirects
|
70 |
+
*/
|
71 |
+
public function debug_custom_redirects() {
|
72 |
+
global $permalink_manager, $permalink_manager_uris, $permalink_manager_redirects;
|
73 |
+
|
74 |
+
if(isset($_GET['debug_custom_redirects']) && current_user_can('manage_options')) {
|
75 |
+
if(!empty($permalink_manager_uris)) {
|
76 |
+
$uri_post_class = $permalink_manager->functions['uri-functions-post'];
|
77 |
+
$uri_tax_class = $permalink_manager->functions['uri-functions-tax'];
|
78 |
+
$home_url = Permalink_Manager_Helper_Functions::get_permalink_base();
|
79 |
+
|
80 |
+
remove_filter('_get_page_link', array($uri_post_class, 'custom_post_permalinks'), 99, 2);
|
81 |
+
remove_filter('page_link', array($uri_post_class, 'custom_post_permalinks'), 99, 2);
|
82 |
+
remove_filter('post_link', array($uri_post_class, 'custom_post_permalinks'), 99, 2);
|
83 |
+
remove_filter('post_type_link', array($uri_post_class, 'custom_post_permalinks'), 99, 2);
|
84 |
+
remove_filter('attachment_link', array($uri_post_class, 'custom_post_permalinks'), 99, 2);
|
85 |
+
remove_filter('term_link', array($uri_tax_class, 'custom_tax_permalinks'), 999, 2 );
|
86 |
+
remove_filter('category_link', array($uri_tax_class, 'custom_tax_permalinks'), 999, 2 );
|
87 |
+
remove_filter('tag_link', array($uri_tax_class, 'custom_tax_permalinks'), 999, 2 );
|
88 |
+
|
89 |
+
$csv = array();
|
90 |
+
|
91 |
+
// Native redirects
|
92 |
+
foreach($permalink_manager_uris as $element_id => $uri) {
|
93 |
+
if(is_numeric($element_id)) {
|
94 |
+
$original_permalink = user_trailingslashit(get_permalink($element_id));
|
95 |
+
$custom_permalink = user_trailingslashit($home_url . "/" . $uri);
|
96 |
+
} else {
|
97 |
+
$term_id = preg_replace("/[^0-9]/", "", $element_id);
|
98 |
+
$term = get_term($term_id);
|
99 |
+
|
100 |
+
if(empty($term->taxonomy)) { continue; }
|
101 |
+
|
102 |
+
$original_permalink = user_trailingslashit(get_term_link($term->term_id, $term->taxonomy));
|
103 |
+
$custom_permalink = user_trailingslashit($home_url . "/" . $uri);
|
104 |
+
}
|
105 |
+
|
106 |
+
if($original_permalink == $custom_permalink && $original_permalink !== '/') { continue; }
|
107 |
+
|
108 |
+
$csv[$element_id] = array(
|
109 |
+
'type' => 'native_redirect',
|
110 |
+
'from' => $original_permalink,
|
111 |
+
'to' => $custom_permalink
|
112 |
+
);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
// Custom redirects
|
117 |
+
if($permalink_manager_redirects) {
|
118 |
+
foreach($permalink_manager_redirects as $element_id => $redirects) {
|
119 |
+
if(empty($permalink_manager_uris[$element_id])) { continue; }
|
120 |
+
$custom_permalink = user_trailingslashit($home_url . "/" . $permalink_manager_uris[$element_id]);
|
121 |
+
|
122 |
+
if(is_array($redirects)) {
|
123 |
+
$redirects = array_values($redirects);
|
124 |
+
$redirects_count = count($redirects);
|
125 |
+
|
126 |
+
foreach($redirects as $index => $redirect) {
|
127 |
+
$redirect_url = user_trailingslashit($home_url . "/" . $redirect);
|
128 |
+
|
129 |
+
$csv["extra-redirect-{$index}-{$element_id}"] = array(
|
130 |
+
'type' => 'extra_redirect',
|
131 |
+
'from' => $redirect_url,
|
132 |
+
'to' => $custom_permalink
|
133 |
+
);
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
echo self::output_csv($csv);
|
140 |
+
die();
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
public static function debug_custom_fields() {
|
145 |
+
global $pagenow, $post;
|
146 |
+
|
147 |
+
if($pagenow == 'post.php' && isset($_GET['debug_custom_fields']) && isset($_GET['post'])) {
|
148 |
+
$post_id = intval($_GET['post']);
|
149 |
+
$custom_fields = get_post_meta($post_id);
|
150 |
+
|
151 |
+
self::display_debug_data($custom_fields);
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* A function used to display the debug data in various functions
|
157 |
+
*/
|
158 |
+
public static function display_debug_data($debug_info) {
|
159 |
+
$debug_txt = sprintf("<pre style=\"display:block;\">%s</pre>", print_r($debug_info, true));
|
160 |
+
wp_die($debug_txt);
|
161 |
+
}
|
162 |
+
|
163 |
+
public static function output_csv($array) {
|
164 |
+
if(count($array) == 0) {
|
165 |
+
return null;
|
166 |
+
}
|
167 |
+
|
168 |
+
// Disable caching
|
169 |
+
$now = gmdate("D, d M Y H:i:s");
|
170 |
+
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
|
171 |
+
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
|
172 |
+
header("Last-Modified: {$now} GMT");
|
173 |
+
|
174 |
+
// Force download
|
175 |
+
header("Content-Type: application/force-download");
|
176 |
+
header("Content-Type: application/octet-stream");
|
177 |
+
header("Content-Type: application/download");
|
178 |
+
|
179 |
+
// Disposition / encoding on response body
|
180 |
+
header("Content-Disposition: attachment;filename=debug.csv");
|
181 |
+
header("Content-Transfer-Encoding: binary");
|
182 |
+
|
183 |
+
ob_start();
|
184 |
+
|
185 |
+
$df = fopen("php://output", 'w');
|
186 |
+
|
187 |
+
fputcsv($df, array_keys(reset($array)));
|
188 |
+
foreach ($array as $row) {
|
189 |
+
fputcsv($df, $row);
|
190 |
+
}
|
191 |
+
fclose($df);
|
192 |
+
|
193 |
+
return ob_get_clean();
|
194 |
+
}
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
?>
|
includes/core/permalink-manager-helper-functions.php
CHANGED
@@ -136,9 +136,9 @@ class Permalink_Manager_Helper_Functions extends Permalink_Manager_Class {
|
|
136 |
|
137 |
static function content_types_disabled_by_default($is_taxonomy = false) {
|
138 |
if($is_taxonomy) {
|
139 |
-
return array('product_shipping_class');
|
140 |
} else {
|
141 |
-
return array('revision', 'algolia_task', 'fl_builder', 'fl-builder', 'fl-theme-layout', 'wc_product_tab', 'wc_voucher', 'wc_voucher_template', 'sliders', 'thirstylink');
|
142 |
}
|
143 |
}
|
144 |
|
@@ -442,12 +442,13 @@ class Permalink_Manager_Helper_Functions extends Permalink_Manager_Class {
|
|
442 |
|
443 |
// $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $clean);
|
444 |
$percent_sign = ($keep_percent_sign) ? "\%" : "";
|
445 |
-
$clean = preg_replace("/[^\p{Thai}\p{Xwd}a-zA-Z0-9{$percent_sign}\/_
|
446 |
$clean = ($force_lowercase) ? strtolower(trim($clean, '-')) : trim($clean, '-');
|
447 |
|
448 |
// Remove special characters
|
449 |
if($sanitize_slugs !== false) {
|
450 |
$clean = preg_replace("/[\s_|+-]+/", "-", $clean);
|
|
|
451 |
$clean = preg_replace('/([\.]+)(?![a-z]{3,4}$)/i', '', $clean);
|
452 |
$clean = preg_replace('/([-\s+]\/[-\s+])/', '-', $clean);
|
453 |
} else {
|
@@ -488,6 +489,10 @@ class Permalink_Manager_Helper_Functions extends Permalink_Manager_Class {
|
|
488 |
$force_custom_slugs = apply_filters('permalink_manager_force_custom_slugs', $force_custom_slugs, $slug, $object);
|
489 |
|
490 |
if($force_custom_slugs) {
|
|
|
|
|
|
|
|
|
491 |
$title = (!empty($object->name)) ? $object->name : $object->post_title;
|
492 |
$title = self::remove_slashes($title);
|
493 |
|
136 |
|
137 |
static function content_types_disabled_by_default($is_taxonomy = false) {
|
138 |
if($is_taxonomy) {
|
139 |
+
return array('product_shipping_class', 'post_status');
|
140 |
} else {
|
141 |
+
return array('revision', 'algolia_task', 'fl_builder', 'fl-builder', 'fl-theme-layout', 'wc_product_tab', 'wc_voucher', 'wc_voucher_template', 'sliders', 'thirstylink', 'elementor_library', 'cms_block');
|
142 |
}
|
143 |
}
|
144 |
|
442 |
|
443 |
// $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $clean);
|
444 |
$percent_sign = ($keep_percent_sign) ? "\%" : "";
|
445 |
+
$clean = preg_replace("/[^\p{Thai}\p{Xwd}\p{Hebrew}a-zA-Z0-9{$percent_sign}\/_\.|+, -]/u", '', $clean);
|
446 |
$clean = ($force_lowercase) ? strtolower(trim($clean, '-')) : trim($clean, '-');
|
447 |
|
448 |
// Remove special characters
|
449 |
if($sanitize_slugs !== false) {
|
450 |
$clean = preg_replace("/[\s_|+-]+/", "-", $clean);
|
451 |
+
$clean = preg_replace("/[,]+/", "", $clean);
|
452 |
$clean = preg_replace('/([\.]+)(?![a-z]{3,4}$)/i', '', $clean);
|
453 |
$clean = preg_replace('/([-\s+]\/[-\s+])/', '-', $clean);
|
454 |
} else {
|
489 |
$force_custom_slugs = apply_filters('permalink_manager_force_custom_slugs', $force_custom_slugs, $slug, $object);
|
490 |
|
491 |
if($force_custom_slugs) {
|
492 |
+
// Decode URI-encoded characters
|
493 |
+
//$slug = urldecode($slug);
|
494 |
+
//$title = urldecode($title);
|
495 |
+
|
496 |
$title = (!empty($object->name)) ? $object->name : $object->post_title;
|
497 |
$title = self::remove_slashes($title);
|
498 |
|
includes/core/permalink-manager-third-parties.php
CHANGED
@@ -7,6 +7,7 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
7 |
|
8 |
public function __construct() {
|
9 |
add_action('init', array($this, 'init_hooks'), 99);
|
|
|
10 |
}
|
11 |
|
12 |
function init_hooks() {
|
@@ -137,6 +138,17 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
137 |
}
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
/**
|
141 |
* 0. Stop redirect
|
142 |
*/
|
@@ -173,7 +185,8 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
173 |
|
174 |
// Fallback
|
175 |
if(is_string($element) && strpos($element, 'tax-') !== false) {
|
176 |
-
$
|
|
|
177 |
} else if(is_numeric($element)) {
|
178 |
$element = get_post($element);
|
179 |
}
|
@@ -272,6 +285,7 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
272 |
$element = get_term($item_id);
|
273 |
if(!empty($element) && !is_wp_error($element)) {
|
274 |
$element_id = $element->term_taxonomy_id;
|
|
|
275 |
} else {
|
276 |
return false;
|
277 |
}
|
@@ -279,8 +293,8 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
279 |
$element = get_post($item_id);
|
280 |
|
281 |
if(!empty($element->post_type)) {
|
282 |
-
$element_type = $element->post_type;
|
283 |
$element_id = $item_id;
|
|
|
284 |
}
|
285 |
}
|
286 |
|
@@ -290,7 +304,7 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
290 |
$language_code = self::get_language_code($element);
|
291 |
|
292 |
if(!empty($uri_parts['lang']) && ($uri_parts['lang'] != $language_code)) {
|
293 |
-
$wpml_item_id = apply_filters('wpml_object_id', $element_id);
|
294 |
$item_id = (is_numeric($wpml_item_id)) ? $wpml_item_id : $item_id;
|
295 |
}
|
296 |
|
@@ -438,8 +452,12 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
438 |
// Get element language code
|
439 |
if(!empty($_REQUEST['data']) && strpos($_REQUEST['data'], "target_lang")) {
|
440 |
$language_code = preg_replace('/(.*target_lang=)([^=&]+)(.*)/', '$2', $_REQUEST['data']);
|
441 |
-
} else if($pagenow
|
442 |
$language_code = $_GET['lang'];
|
|
|
|
|
|
|
|
|
443 |
} else {
|
444 |
$language_code = self::get_language_code($element);
|
445 |
}
|
@@ -639,11 +657,12 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
639 |
|
640 |
if(!empty($object)) {
|
641 |
$product_id = $object->get_id();
|
642 |
-
$product_uri = Permalink_Manager_URI_Functions_Post::get_default_post_uri($product_id, false, true);
|
643 |
|
644 |
-
$permalink_manager_uris[$product_id]
|
|
|
645 |
|
646 |
-
|
|
|
647 |
}
|
648 |
}
|
649 |
|
@@ -673,102 +692,99 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
673 |
|
674 |
function yoast_fix_breadcrumbs($links) {
|
675 |
// Get post type permastructure settings
|
676 |
-
global $
|
677 |
|
678 |
-
// Check if filter should be activated
|
679 |
if(empty($permalink_manager_options['general']['yoast_breadcrumbs']) || empty($permalink_manager_uris)) { return $links; }
|
680 |
|
681 |
-
// Get post
|
682 |
-
$
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
} else if(!empty($queried_element->term_id)) {
|
689 |
-
$element_id = "tax-{$queried_element->term_id}";
|
690 |
-
} /*else {
|
691 |
-
return $links;
|
692 |
-
}*/
|
693 |
-
|
694 |
-
if(!empty($element_id) && !empty($permalink_manager_uris[$element_id])) {
|
695 |
-
$custom_uri = preg_replace("/([^\/]+)$/", '', $permalink_manager_uris[$element_id]);
|
696 |
-
} else {
|
697 |
-
$custom_uri = trim(preg_replace("/([^\/]+)$/", '', $wp->request), "/");
|
698 |
-
//return $links;
|
699 |
-
}
|
700 |
|
701 |
-
|
702 |
-
|
703 |
-
$
|
704 |
-
|
|
|
|
|
705 |
|
706 |
-
|
707 |
-
|
|
|
|
|
|
|
|
|
708 |
|
709 |
-
|
710 |
-
|
711 |
-
if(empty($slug)) { continue; }
|
712 |
|
713 |
-
|
714 |
-
|
|
|
715 |
|
716 |
-
|
717 |
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
}
|
|
|
729 |
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
$element = $wpdb->get_row($sql);
|
735 |
-
}
|
736 |
|
737 |
-
|
738 |
-
|
739 |
-
$sql = sprintf("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_name = '%s' AND post_status = 'publish' AND post_type IN ('%s') AND post_type != 'attachment' LIMIT 1", $slug, implode("','", array_keys($available_post_types)));
|
740 |
|
741 |
-
|
742 |
-
|
|
|
743 |
|
744 |
-
|
745 |
-
$title = (!empty($yoast_meta_terms[$element->taxonomy][$element->term_id]['wpseo_bctitle'])) ? $yoast_meta_terms[$element->taxonomy][$element->term_id]['wpseo_bctitle'] : $element->name;
|
746 |
-
|
747 |
-
$breadcrumbs[] = array(
|
748 |
-
'text' => $title,
|
749 |
-
'url' => get_term_link((int) $element->term_id, $element->taxonomy),
|
750 |
-
);
|
751 |
-
} else if(!empty($element->ID)) {
|
752 |
-
$title = get_post_meta($element->ID, '_yoast_wpseo_bctitle', true);
|
753 |
-
$title = (!empty($title)) ? $title : $element->post_title;
|
754 |
-
|
755 |
-
$breadcrumbs[] = array(
|
756 |
-
'text' => $title,
|
757 |
-
'url' => get_permalink($element->ID),
|
758 |
-
);
|
759 |
-
}
|
760 |
}
|
761 |
|
762 |
-
//
|
763 |
-
if(!empty($
|
764 |
-
$
|
765 |
-
|
766 |
-
$breadcrumbs =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
|
768 |
-
$
|
|
|
|
|
|
|
769 |
}
|
770 |
}
|
771 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
772 |
return array_filter($links);
|
773 |
}
|
774 |
|
@@ -964,5 +980,21 @@ class Permalink_Manager_Third_Parties extends Permalink_Manager_Class {
|
|
964 |
update_option('permalink-manager-uris', $permalink_manager_uris);
|
965 |
}
|
966 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
967 |
}
|
968 |
?>
|
7 |
|
8 |
public function __construct() {
|
9 |
add_action('init', array($this, 'init_hooks'), 99);
|
10 |
+
add_action('plugins_loaded', array($this, 'init_early_hooks'), 99);
|
11 |
}
|
12 |
|
13 |
function init_hooks() {
|
138 |
}
|
139 |
}
|
140 |
|
141 |
+
/**
|
142 |
+
* Some of the hooks must be called shortly after all the plugins are loaded
|
143 |
+
*/
|
144 |
+
public function init_early_hooks() {
|
145 |
+
// 1. WP Store Locator
|
146 |
+
if(class_exists('WPSL_CSV')) {
|
147 |
+
add_action('added_post_meta', array($this, 'wpsl_regenerate_after_import'), 10, 4);
|
148 |
+
add_action('updated_post_meta', array($this, 'wpsl_regenerate_after_import'), 10, 4);
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
/**
|
153 |
* 0. Stop redirect
|
154 |
*/
|
185 |
|
186 |
// Fallback
|
187 |
if(is_string($element) && strpos($element, 'tax-') !== false) {
|
188 |
+
$element_id = intval(preg_replace("/[^0-9]/", "", $element));
|
189 |
+
$element = get_term($element_id);
|
190 |
} else if(is_numeric($element)) {
|
191 |
$element = get_post($element);
|
192 |
}
|
285 |
$element = get_term($item_id);
|
286 |
if(!empty($element) && !is_wp_error($element)) {
|
287 |
$element_id = $element->term_taxonomy_id;
|
288 |
+
$element_type = $element->taxonomy;
|
289 |
} else {
|
290 |
return false;
|
291 |
}
|
293 |
$element = get_post($item_id);
|
294 |
|
295 |
if(!empty($element->post_type)) {
|
|
|
296 |
$element_id = $item_id;
|
297 |
+
$element_type = $element->post_type;
|
298 |
}
|
299 |
}
|
300 |
|
304 |
$language_code = self::get_language_code($element);
|
305 |
|
306 |
if(!empty($uri_parts['lang']) && ($uri_parts['lang'] != $language_code)) {
|
307 |
+
$wpml_item_id = apply_filters('wpml_object_id', $element_id, $element_type);
|
308 |
$item_id = (is_numeric($wpml_item_id)) ? $wpml_item_id : $item_id;
|
309 |
}
|
310 |
|
452 |
// Get element language code
|
453 |
if(!empty($_REQUEST['data']) && strpos($_REQUEST['data'], "target_lang")) {
|
454 |
$language_code = preg_replace('/(.*target_lang=)([^=&]+)(.*)/', '$2', $_REQUEST['data']);
|
455 |
+
} else if(in_array($pagenow, array('post.php', 'post-new.php')) && !empty($_GET['lang'])) {
|
456 |
$language_code = $_GET['lang'];
|
457 |
+
} else if(!empty($_REQUEST['icl_post_language'])) {
|
458 |
+
$language_code = $_REQUEST['icl_post_language'];
|
459 |
+
} else if(!empty($_POST['action']) && $_POST['action'] == 'pm_save_permalink' && defined('ICL_LANGUAGE_CODE')) {
|
460 |
+
$language_code = ICL_LANGUAGE_CODE;
|
461 |
} else {
|
462 |
$language_code = self::get_language_code($element);
|
463 |
}
|
657 |
|
658 |
if(!empty($object)) {
|
659 |
$product_id = $object->get_id();
|
|
|
660 |
|
661 |
+
if(empty($permalink_manager_uris[$product_id])) {
|
662 |
+
$permalink_manager_uris[$product_id] = Permalink_Manager_URI_Functions_Post::get_default_post_uri($product_id, false, true);
|
663 |
|
664 |
+
update_option('permalink-manager-uris', $permalink_manager_uris);
|
665 |
+
}
|
666 |
}
|
667 |
}
|
668 |
|
692 |
|
693 |
function yoast_fix_breadcrumbs($links) {
|
694 |
// Get post type permastructure settings
|
695 |
+
global $permalink_manager_uris, $permalink_manager_options, $post, $wpdb, $wp;
|
696 |
|
697 |
+
// Check if the filter should be activated
|
698 |
if(empty($permalink_manager_options['general']['yoast_breadcrumbs']) || empty($permalink_manager_uris)) { return $links; }
|
699 |
|
700 |
+
// Get current post/page/term (if available)
|
701 |
+
$queried_element = get_queried_object();
|
702 |
+
if(!empty($queried_element->ID)) {
|
703 |
+
$element_id = $queried_element->ID;
|
704 |
+
} else if(!empty($queried_element->term_id)) {
|
705 |
+
$element_id = "tax-{$queried_element->term_id}";
|
706 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
707 |
|
708 |
+
// Get the custom permalink (if available) or the current request URL (if unavailable)
|
709 |
+
if(!empty($element_id) && !empty($permalink_manager_uris[$element_id])) {
|
710 |
+
$custom_uri = preg_replace("/([^\/]+)$/", '', $permalink_manager_uris[$element_id]);
|
711 |
+
} else {
|
712 |
+
$custom_uri = trim(preg_replace("/([^\/]+)$/", '', $wp->request), "/");
|
713 |
+
}
|
714 |
|
715 |
+
$all_uris = array_flip($permalink_manager_uris);
|
716 |
+
$custom_uri_parts = explode('/', trim($custom_uri));
|
717 |
+
$breadcrumbs = array();
|
718 |
+
$snowball = '';
|
719 |
+
$available_taxonomies = Permalink_Manager_Helper_Functions::get_taxonomies_array();
|
720 |
+
$available_post_types = Permalink_Manager_Helper_Functions::get_post_types_array();
|
721 |
|
722 |
+
// Get Yoast Meta (the breadcrumbs titles can be changed in Yoast metabox)
|
723 |
+
$yoast_meta_terms = get_option('wpseo_taxonomy_meta');
|
|
|
724 |
|
725 |
+
// Get internal breadcrumb elements
|
726 |
+
foreach($custom_uri_parts as $slug) {
|
727 |
+
if(empty($slug)) { continue; }
|
728 |
|
729 |
+
$snowball = (empty($snowball)) ? $slug : "{$snowball}/{$slug}";
|
730 |
|
731 |
+
// 1A. Try to match any custom URI
|
732 |
+
if($snowball) {
|
733 |
+
$uri = trim($snowball, "/");
|
734 |
+
$element = (!empty($all_uris[$uri])) ? $all_uris[$uri] : false;
|
735 |
|
736 |
+
if(!empty($element) && strpos($element, 'tax-') !== false) {
|
737 |
+
$element_id = intval(preg_replace("/[^0-9]/", "", $element));
|
738 |
+
$element = get_term($element_id);
|
739 |
+
} else if(is_numeric($element)) {
|
740 |
+
$element = get_post($element);
|
741 |
}
|
742 |
+
}
|
743 |
|
744 |
+
// 1B. Try to get term
|
745 |
+
if(empty($element) && !empty($available_taxonomies)) {
|
746 |
+
$sql = sprintf("SELECT t.term_id, t.name, tt.taxonomy FROM {$wpdb->terms} AS t LEFT JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE slug = '%s' AND tt.taxonomy IN ('%s') LIMIT 1", $slug, implode("','", array_keys($available_taxonomies)));
|
|
|
|
|
|
|
747 |
|
748 |
+
$element = $wpdb->get_row($sql);
|
749 |
+
}
|
|
|
750 |
|
751 |
+
// 1C. Try to get page/post
|
752 |
+
if(empty($element) && !empty($available_post_types)) {
|
753 |
+
$sql = sprintf("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_name = '%s' AND post_status = 'publish' AND post_type IN ('%s') AND post_type != 'attachment' LIMIT 1", $slug, implode("','", array_keys($available_post_types)));
|
754 |
|
755 |
+
$element = $wpdb->get_row($sql);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
756 |
}
|
757 |
|
758 |
+
// 2A. When the term is found, we can add it to the breadcrumbs
|
759 |
+
if(!empty($element->term_id)) {
|
760 |
+
$title = (!empty($yoast_meta_terms[$element->taxonomy][$element->term_id]['wpseo_bctitle'])) ? $yoast_meta_terms[$element->taxonomy][$element->term_id]['wpseo_bctitle'] : $element->name;
|
761 |
+
|
762 |
+
$breadcrumbs[] = array(
|
763 |
+
'text' => $title,
|
764 |
+
'url' => get_term_link((int) $element->term_id, $element->taxonomy),
|
765 |
+
);
|
766 |
+
}
|
767 |
+
// 2B. When the post/page is found, we can add it to the breadcrumbs
|
768 |
+
else if(!empty($element->ID)) {
|
769 |
+
$title = get_post_meta($element->ID, '_yoast_wpseo_bctitle', true);
|
770 |
+
$title = (!empty($title)) ? $title : $element->post_title;
|
771 |
|
772 |
+
$breadcrumbs[] = array(
|
773 |
+
'text' => $title,
|
774 |
+
'url' => get_permalink($element->ID),
|
775 |
+
);
|
776 |
}
|
777 |
}
|
778 |
|
779 |
+
// Add new links to current breadcrumbs array
|
780 |
+
if(!empty($links) && is_array($links)) {
|
781 |
+
$first_element = reset($links);
|
782 |
+
$last_element = end($links);
|
783 |
+
$breadcrumbs = (!empty($breadcrumbs)) ? $breadcrumbs : array();
|
784 |
+
|
785 |
+
$links = array_merge(array($first_element), $breadcrumbs, array($last_element));
|
786 |
+
}
|
787 |
+
|
788 |
return array_filter($links);
|
789 |
}
|
790 |
|
980 |
update_option('permalink-manager-uris', $permalink_manager_uris);
|
981 |
}
|
982 |
|
983 |
+
/**
|
984 |
+
* 10. Store Locator - CSV Manager
|
985 |
+
*/
|
986 |
+
public function wpsl_regenerate_after_import($meta_id, $post_id, $meta_key, $meta_value) {
|
987 |
+
global $permalink_manager_uris;
|
988 |
+
|
989 |
+
if(strpos($meta_key, 'wpsl_') !== false && isset($_POST['wpsl_csv_import_nonce'])) {
|
990 |
+
$default_uri = Permalink_Manager_URI_Functions_Post::get_default_post_uri($post_id);
|
991 |
+
|
992 |
+
if($default_uri) {
|
993 |
+
$permalink_manager_uris[$post_id] = $default_uri;
|
994 |
+
update_option('permalink-manager-uris', $permalink_manager_uris);
|
995 |
+
}
|
996 |
+
}
|
997 |
+
}
|
998 |
+
|
999 |
}
|
1000 |
?>
|
includes/core/permalink-manager-uri-functions-post.php
CHANGED
@@ -56,6 +56,9 @@ class Permalink_Manager_URI_Functions_Post extends Permalink_Manager_Class {
|
|
56 |
// Do not filter in Elementor
|
57 |
if(!empty($_GET['action']) && $_GET['action'] == 'elementor') { return $permalink; }
|
58 |
|
|
|
|
|
|
|
59 |
$post = (is_integer($post)) ? get_post($post) : $post;
|
60 |
|
61 |
// Start with homepage URL
|
56 |
// Do not filter in Elementor
|
57 |
if(!empty($_GET['action']) && $_GET['action'] == 'elementor') { return $permalink; }
|
58 |
|
59 |
+
// Do not filter in WPML String Editor
|
60 |
+
if(!empty($_REQUEST['icl_ajx_action']) && $_REQUEST['icl_ajx_action'] == 'icl_st_save_translation') { return $permalink; }
|
61 |
+
|
62 |
$post = (is_integer($post)) ? get_post($post) : $post;
|
63 |
|
64 |
// Start with homepage URL
|
includes/views/permalink-manager-settings.php
CHANGED
@@ -45,6 +45,18 @@ class Permalink_Manager_Settings extends Permalink_Manager_Class {
|
|
45 |
'label' => __('Show "Native slug" field', 'permalink-manager'),
|
46 |
'input_class' => '',
|
47 |
'description' => __('If enabled, it would be possible to edit the native slug via URI Editor on single post/term edit page.', 'permalink-manager')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
)
|
49 |
)
|
50 |
),
|
@@ -61,18 +73,18 @@ class Permalink_Manager_Settings extends Permalink_Manager_Class {
|
|
61 |
),
|
62 |
'setup_redirects' => array(
|
63 |
'type' => 'single_checkbox',
|
64 |
-
'label' => __('Auto-create "Extra Redirects" for old permalinks', 'permalink-manager'),
|
65 |
'input_class' => '',
|
66 |
'pro' => true,
|
67 |
'disabled' => true,
|
68 |
-
'description' => __('If enabled, the redirects will be automatially created for old custom permalinks, after posts or terms are
|
69 |
),
|
70 |
'redirect' => array(
|
71 |
'type' => 'select',
|
72 |
'label' => __('Redirect', 'permalink-manager'),
|
73 |
'input_class' => 'settings-select',
|
74 |
'choices' => array(0 => __('Disable', 'permalink-manager'), "301" => __('Enable "301 redirect"', 'permalink-manager'), "302" => __('Enable "302 redirect"', 'permalink-manager')),
|
75 |
-
'description' => __('If enabled - the visitors will be redirected from native permalinks to your custom permalinks
|
76 |
),
|
77 |
'trailing_slashes' => array(
|
78 |
'type' => 'select',
|
@@ -80,13 +92,7 @@ class Permalink_Manager_Settings extends Permalink_Manager_Class {
|
|
80 |
'input_class' => 'settings-select',
|
81 |
'choices' => array(0 => __('Use default settings', 'permalink-manager'), 1 => __('Add trailing slashes', 'permalink-manager'), 10 => __('Add trailing slashes (+ auto-redirect links without them)', 'permalink-manager'), 2 => __('Remove trailing slashes', 'permalink-manager'), 20 => __('Remove trailing slashes (+ auto-redirect links with them)', 'permalink-manager'),),
|
82 |
'description' => __('This option can be used to alter the native settings and control if trailing slash should be added or removed from the end of posts & terms permalinks.', 'permalink-manager')
|
83 |
-
)
|
84 |
-
'pagination_redirect' => array(
|
85 |
-
'type' => 'single_checkbox',
|
86 |
-
'label' => __('Force 404 on non-existing pagination pages', 'permalink-manager'),
|
87 |
-
'input_class' => '',
|
88 |
-
'description' => __('If enabled, the non-existing pagination pages (for single posts) will return 404 ("Not Found") error.<br /><strong>Please disable it, if you encounter any problems with pagination pages or use custom pagination system.</strong>', 'permalink-manager')
|
89 |
-
),
|
90 |
)
|
91 |
),
|
92 |
'advanced' => array(
|
@@ -134,9 +140,15 @@ class Permalink_Manager_Settings extends Permalink_Manager_Class {
|
|
134 |
),
|
135 |
'partial_disable' => array(
|
136 |
'type' => 'checkbox',
|
137 |
-
'label' => __('
|
138 |
'choices' => $content_types,
|
139 |
-
'description' => __('
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
),
|
141 |
)
|
142 |
)
|
45 |
'label' => __('Show "Native slug" field', 'permalink-manager'),
|
46 |
'input_class' => '',
|
47 |
'description' => __('If enabled, it would be possible to edit the native slug via URI Editor on single post/term edit page.', 'permalink-manager')
|
48 |
+
),
|
49 |
+
'pagination_redirect' => array(
|
50 |
+
'type' => 'single_checkbox',
|
51 |
+
'label' => __('Force 404 on non-existing pagination pages', 'permalink-manager'),
|
52 |
+
'input_class' => '',
|
53 |
+
'description' => __('If enabled, the non-existing pagination pages (for single posts) will return 404 ("Not Found") error.<br /><strong>Please disable it, if you encounter any problems with pagination pages or use custom pagination system.</strong>', 'permalink-manager')
|
54 |
+
),
|
55 |
+
'sslwww_redirect' => array(
|
56 |
+
'type' => 'single_checkbox',
|
57 |
+
'label' => __('Force HTTPS in URLs', 'permalink-manager'),
|
58 |
+
'input_class' => '',
|
59 |
+
'description' => __('<strong>Please disable it, if you encounter any redirect loop issues.</strong>', 'permalink-manager')
|
60 |
)
|
61 |
)
|
62 |
),
|
73 |
),
|
74 |
'setup_redirects' => array(
|
75 |
'type' => 'single_checkbox',
|
76 |
+
'label' => __('Auto-create "Extra Redirects" for old version of permalinks', 'permalink-manager'),
|
77 |
'input_class' => '',
|
78 |
'pro' => true,
|
79 |
'disabled' => true,
|
80 |
+
'description' => __('If enabled, the redirects will be automatially created for old custom permalinks, after posts or terms URLs are changed.', 'permalink-manager')
|
81 |
),
|
82 |
'redirect' => array(
|
83 |
'type' => 'select',
|
84 |
'label' => __('Redirect', 'permalink-manager'),
|
85 |
'input_class' => 'settings-select',
|
86 |
'choices' => array(0 => __('Disable', 'permalink-manager'), "301" => __('Enable "301 redirect"', 'permalink-manager'), "302" => __('Enable "302 redirect"', 'permalink-manager')),
|
87 |
+
'description' => __('If enabled - the visitors will be redirected from native permalinks to your custom permalinks.', 'permalink-manager')
|
88 |
),
|
89 |
'trailing_slashes' => array(
|
90 |
'type' => 'select',
|
92 |
'input_class' => 'settings-select',
|
93 |
'choices' => array(0 => __('Use default settings', 'permalink-manager'), 1 => __('Add trailing slashes', 'permalink-manager'), 10 => __('Add trailing slashes (+ auto-redirect links without them)', 'permalink-manager'), 2 => __('Remove trailing slashes', 'permalink-manager'), 20 => __('Remove trailing slashes (+ auto-redirect links with them)', 'permalink-manager'),),
|
94 |
'description' => __('This option can be used to alter the native settings and control if trailing slash should be added or removed from the end of posts & terms permalinks.', 'permalink-manager')
|
95 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
)
|
97 |
),
|
98 |
'advanced' => array(
|
140 |
),
|
141 |
'partial_disable' => array(
|
142 |
'type' => 'checkbox',
|
143 |
+
'label' => __('Exclude content types', 'permalink-manager'),
|
144 |
'choices' => $content_types,
|
145 |
+
'description' => __('Permalink Manager will ignore and not filter the custom permalinks of all selected above post types & taxonomies.', 'permalink-manager')
|
146 |
+
),
|
147 |
+
'edit_uris_cap' => array(
|
148 |
+
'type' => 'select',
|
149 |
+
'label' => __('URI Editor role capability', 'permalink-manager'),
|
150 |
+
'choices' => array('edit_theme_options' => __('Administrator (edit_theme_options)', 'permalink-manager'), 'publish_pages' => __('Editor (publish_pages)', 'permalink-manager'), 'publish_posts' => __('Author (publish_posts)', 'permalink-manager'), 'edit_posts' => __('Contributor (edit_posts)', 'permalink-manager')),
|
151 |
+
'description' => sprintf(__('Only the users who have selected capability will be able to access URI Editor.<br />The list of capabilities <a href="%s" target="_blank">can be found here</a>.', 'permalink-manager'), 'https://wordpress.org/support/article/roles-and-capabilities/#capability-vs-role-table')
|
152 |
),
|
153 |
)
|
154 |
)
|
includes/views/permalink-manager-upgrade.php
DELETED
@@ -1,64 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Display the page where the slugs could be regenerated or replaced
|
5 |
-
*/
|
6 |
-
class Permalink_Manager_Upgrade extends Permalink_Manager_Class {
|
7 |
-
|
8 |
-
public function __construct() {
|
9 |
-
if(!defined('PERMALINK_MANAGER_PRO')) {
|
10 |
-
add_filter( 'permalink_manager_sections', array($this, 'add_upgrade_section'), 1 );
|
11 |
-
}
|
12 |
-
}
|
13 |
-
|
14 |
-
public function add_upgrade_section($admin_sections) {
|
15 |
-
$admin_sections['upgrade'] = array(
|
16 |
-
'name' => __('Extra features', 'permalink-manager'),
|
17 |
-
'function' => array('class' => 'Permalink_Manager_Upgrade', 'method' => 'output')
|
18 |
-
);
|
19 |
-
|
20 |
-
return $admin_sections;
|
21 |
-
}
|
22 |
-
|
23 |
-
public function output() {
|
24 |
-
$output = sprintf("<h3>%s</h3>", __("Permalink Manager Pro extra features", "permalink-manager"));
|
25 |
-
|
26 |
-
$output .= sprintf("<p class=\"lead\">%s</p>", __('Take full control of your permalinks! Permalink Manager Pro contains a bunch of useful extra functionalities!', 'permalink-manager'));
|
27 |
-
$output .= sprintf("<p class=\"\">%s</p>", __('Not certain if Permalink Manager Pro will fix your permalink problem?<br />Contact us at <a href="mailto:contact@permalinkmanager.pro">contact@permalinkmanager.pro</a>!', 'permalink-manager'));
|
28 |
-
|
29 |
-
$output .= "<div class=\"columns-container\">";
|
30 |
-
$output .= "<div class=\"column-1_3\">";
|
31 |
-
$output .= sprintf("<h5>%s</h5>", __("Full Taxonomy Support", "permalink-manager"));
|
32 |
-
$output .= wpautop(__("With Permalink Manager Pro you can easily alter the default taxonomies’ permastructures & edit the full permalink in all the categories, tags and custom taxonomies terms!", "permalink-manager"));
|
33 |
-
$output .= wpautop(__("You can also bulk edit the taxonomies permalinks (eg. reset the native terms slugs) with included tools - “Find & replace” or “Regnerate/reset”", "permalink-manager"));
|
34 |
-
$output .= "</div>";
|
35 |
-
$output .= "<div class=\"column-1_3\">";
|
36 |
-
$output .= sprintf("<h5>%s</h5>", __("Full WooCommerce Support", "permalink-manager"));
|
37 |
-
$output .= wpautop(__("Adjust your shop, product category, tags or single product permalinks and set your e-commerce URLs any way you want!", "permalink-manager"));
|
38 |
-
$output .= wpautop(__("Remove <em>product-category</em>, <em>product-tag</em> and <em>product</em> or replace them with another permalink tags. Furthermore, the plugin allows to set completely custom permalinks for each product & product taxonomies individually.", "permalink-manager"));
|
39 |
-
$output .= "</div>";
|
40 |
-
$output .= "<div class=\"column-1_3\">";
|
41 |
-
$output .= sprintf("<h5>%s</h5>", __("Custom fields inside permalinks", "permalink-manager"));
|
42 |
-
$output .= wpautop(__("Automatically embed your custom fields values inside the permalinks, by adding the custom field tags to the permastructures.", "permalink-manager"));
|
43 |
-
$output .= wpautop(__("This functionality is compatible with meta keys set with Advanced Custom Fields plugin.", "permalink-manager"));
|
44 |
-
$output .= "</div>";
|
45 |
-
$output .= "<div class=\"column-1_3\">";
|
46 |
-
$output .= sprintf("<h5>%s</h5>", __("Extra Redirects", "permalink-manager"));
|
47 |
-
$output .= wpautop(__("Set-up extra redirects and/or aliases for each post or term. Permalink Manager would also automatically create redirects for previously used custom permalinks.", "permalink-manager"));
|
48 |
-
$output .= "</div>";
|
49 |
-
$output .= "<div class=\"column-1_3\">";
|
50 |
-
$output .= sprintf("<h5>%s</h5>", __("Import permalinks from \"Custom Permalinks\"", "permalink-manager"));
|
51 |
-
$output .= wpautop(__("Additionally, Permalink Manager Pro allows to import the custom URIs defined previously with \"Custom Permalinks\" plugin. ", "permalink-manager"));
|
52 |
-
$output .= "</div>";
|
53 |
-
$output .= "<div class=\"column-1_3\">";
|
54 |
-
$output .= sprintf("<h5>%s</h5>", __("Remove \"stop words\" from permalinks", "permalink-manager"));
|
55 |
-
$output .= wpautop(__("Set your own list of stop words or use a predefined one available in 21 languages. If enabled, all the words will be automatically removed from the default permalinks.", "permalink-manager"));
|
56 |
-
$output .= "</div>";
|
57 |
-
$output .= "</div>";
|
58 |
-
|
59 |
-
$output .= sprintf("<p><a class=\"button button-default margin-top\" href=\"%s\" target=\"_blank\">%s</a> <a class=\"button button-primary margin-top\" href=\"%s\" target=\"_blank\">%s</a></p>", PERMALINK_MANAGER_WEBSITE, __("More info about Permalink Manager Pro", "permalink-manager"), "https://gumroad.com/l/permalink-manager", __("Buy Permalink Manager Pro", "permalink-manager"));
|
60 |
-
|
61 |
-
return $output;
|
62 |
-
}
|
63 |
-
|
64 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
7 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
"Language-Team: \n"
|
@@ -14,7 +14,7 @@ msgstr ""
|
|
14 |
"Content-Transfer-Encoding: 8bit\n"
|
15 |
"X-Generator: Loco https://localise.biz/"
|
16 |
|
17 |
-
#: permalink-manager.php:
|
18 |
#, php-format
|
19 |
msgid ""
|
20 |
"Get access to extra features: full taxonomy and WooCommerce support, "
|
@@ -23,750 +23,642 @@ msgid ""
|
|
23 |
"and save %s using \"%s\" coupon code!</strong> Valid until %s!"
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: includes/
|
27 |
-
msgid "
|
28 |
msgstr ""
|
29 |
|
30 |
-
#: includes/
|
31 |
-
msgid "
|
32 |
msgstr ""
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: includes/
|
41 |
-
|
42 |
-
|
43 |
-
"
|
44 |
-
"contact@permalinkmanager.pro</a>!"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/
|
48 |
-
|
|
|
|
|
|
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/
|
52 |
-
msgid ""
|
53 |
-
"With Permalink Manager Pro you can easily alter the default taxonomies’ "
|
54 |
-
"permastructures & edit the full permalink in all the categories, tags and "
|
55 |
-
"custom taxonomies terms!"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: includes/
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: includes/
|
65 |
-
msgid "
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: includes/
|
69 |
-
|
70 |
-
|
71 |
-
"set your e-commerce URLs any way you want!"
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: includes/
|
75 |
-
msgid ""
|
76 |
-
"Remove <em>product-category</em>, <em>product-tag</em> and <em>product</em> "
|
77 |
-
"or replace them with another permalink tags. Furthermore, the plugin allows "
|
78 |
-
"to set completely custom permalinks for each product & product "
|
79 |
-
"taxonomies individually."
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: includes/
|
83 |
-
msgid "
|
84 |
msgstr ""
|
85 |
|
86 |
-
#: includes/
|
87 |
-
msgid ""
|
88 |
-
"Automatically embed your custom fields values inside the permalinks, by "
|
89 |
-
"adding the custom field tags to the permastructures."
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: includes/
|
93 |
-
msgid ""
|
94 |
-
"This functionality is compatible with meta keys set with Advanced Custom "
|
95 |
-
"Fields plugin."
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: includes/
|
99 |
-
msgid "
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: includes/
|
103 |
msgid ""
|
104 |
-
"
|
105 |
-
"
|
106 |
-
"
|
|
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: includes/
|
110 |
-
msgid "
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: includes/
|
114 |
-
msgid ""
|
115 |
-
"Additionally, Permalink Manager Pro allows to import the custom URIs defined "
|
116 |
-
"previously with \"Custom Permalinks\" plugin. "
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/
|
120 |
-
msgid "
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: includes/
|
124 |
-
msgid ""
|
125 |
-
"Set your own list of stop words or use a predefined one available in 21 "
|
126 |
-
"languages. If enabled, all the words will be automatically removed from the "
|
127 |
-
"default permalinks."
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/
|
131 |
-
msgid "
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: includes/
|
135 |
-
|
136 |
-
msgid "Buy Permalink Manager Pro"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/
|
140 |
-
msgid "
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/
|
144 |
-
msgid "
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/
|
148 |
-
|
|
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: includes/
|
152 |
-
|
|
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: includes/
|
156 |
-
|
|
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: includes/
|
160 |
-
#: includes/
|
161 |
-
msgid "
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: includes/
|
165 |
-
|
|
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: includes/
|
169 |
-
|
170 |
-
msgid "Slug"
|
171 |
msgstr ""
|
172 |
|
173 |
-
#: includes/
|
174 |
-
msgid "
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: includes/
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
msgstr ""
|
|
|
182 |
|
183 |
-
#: includes/
|
184 |
-
|
185 |
-
|
186 |
-
msgid "View"
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: includes/
|
190 |
-
#: includes/
|
191 |
-
msgid "
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: includes/
|
195 |
-
#: includes/
|
196 |
-
msgid "
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: includes/
|
200 |
-
|
|
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: includes/
|
204 |
-
|
|
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: includes/
|
208 |
-
msgid "
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: includes/
|
212 |
-
msgid "
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: includes/
|
216 |
-
msgid "
|
|
|
|
|
|
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: includes/
|
220 |
-
msgid "
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: includes/
|
224 |
-
msgid "
|
|
|
|
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: includes/
|
228 |
-
msgid "
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: includes/
|
232 |
-
msgid "
|
|
|
|
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: includes/
|
236 |
-
msgid "
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: includes/
|
240 |
-
msgid "
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: includes/
|
244 |
-
msgid "
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: includes/
|
248 |
-
|
|
|
|
|
|
|
|
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: includes/
|
252 |
-
msgid "
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: includes/
|
256 |
-
msgid "
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: includes/
|
260 |
-
msgid "
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: includes/
|
264 |
-
|
|
|
|
|
|
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: includes/
|
268 |
-
#: includes/
|
269 |
-
|
|
|
|
|
|
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: includes/
|
273 |
msgid ""
|
274 |
-
"
|
275 |
-
"
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: includes/
|
279 |
-
msgid "
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: includes/
|
283 |
-
|
|
|
|
|
|
|
|
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: includes/
|
287 |
-
msgid "
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: includes/
|
291 |
-
|
292 |
-
msgid "
|
|
|
|
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: includes/
|
296 |
-
msgid "
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: includes/
|
300 |
-
msgid "
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: includes/
|
304 |
-
|
305 |
-
msgid "Remove broken URI"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: includes/
|
309 |
-
msgid "
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: includes/
|
313 |
-
msgid "
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: includes/
|
317 |
-
msgid "
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: includes/
|
321 |
-
msgid "
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: includes/
|
325 |
-
msgid "
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: includes/
|
329 |
-
|
330 |
-
msgid "Mode"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/
|
334 |
-
|
335 |
-
msgid "Custom URIs"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: includes/
|
339 |
-
msgid "
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/
|
343 |
-
|
344 |
-
msgid "Select content type"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/
|
348 |
-
|
349 |
-
#: includes/views/permalink-manager-permastructs.php:38
|
350 |
-
msgid "Post types"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: includes/
|
354 |
-
|
355 |
-
#: includes/views/permalink-manager-permastructs.php:44
|
356 |
-
msgid "Taxonomies"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: includes/
|
360 |
-
|
361 |
-
msgid "Select post types"
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: includes/
|
365 |
-
|
366 |
-
msgid "Select taxonomies"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: includes/
|
370 |
-
|
371 |
-
msgid "Select post statuses"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/
|
375 |
-
|
376 |
-
msgid "Select IDs"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/
|
380 |
-
|
381 |
-
msgid ""
|
382 |
-
"To narrow the above filters you can type the post IDs (or ranges) here. Eg. "
|
383 |
-
"<strong>1-8, 10, 25</strong>."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/
|
387 |
-
|
388 |
-
#: includes/views/permalink-manager-permastructs.php:99
|
389 |
-
msgid "Important notices"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: includes/
|
393 |
-
msgid "
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: includes/
|
397 |
-
msgid "
|
398 |
msgstr ""
|
399 |
|
400 |
-
#: includes/
|
401 |
-
msgid "
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: includes/
|
405 |
-
msgid "
|
|
|
|
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: includes/
|
409 |
-
msgid "
|
410 |
msgstr ""
|
411 |
|
412 |
-
#: includes/
|
413 |
-
msgid "
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: includes/
|
417 |
-
|
|
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: includes/
|
421 |
-
msgid "
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: includes/
|
425 |
-
|
|
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: includes/
|
429 |
-
msgid ""
|
430 |
-
"If enabled, the custom permalinks will be automatically updated every time "
|
431 |
-
"the post is saved or updated."
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: includes/
|
435 |
-
msgid "
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: includes/
|
439 |
-
msgid "
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: includes/
|
443 |
-
msgid ""
|
444 |
-
"This function allows Wordpress to correct the URLs used by the visitors."
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/views/permalink-manager-
|
448 |
-
msgid "
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/views/permalink-manager-
|
452 |
-
|
453 |
-
|
454 |
-
"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: includes/views/permalink-manager-
|
458 |
-
|
|
|
|
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: includes/views/permalink-manager-
|
462 |
-
msgid "
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: includes/views/permalink-manager-
|
466 |
-
|
|
|
|
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: includes/views/permalink-manager-
|
470 |
-
msgid "Enable \"302 redirect\""
|
471 |
-
msgstr ""
|
472 |
-
|
473 |
-
#: includes/views/permalink-manager-settings.php:69
|
474 |
-
msgid ""
|
475 |
-
"If enabled - the visitors will be redirected from native permalinks to your "
|
476 |
-
"custom permalinks.<br /><strong>Only native permalinks & extra redirects "
|
477 |
-
"will be redirected to new custom permalinks</strong>."
|
478 |
-
msgstr ""
|
479 |
-
|
480 |
-
#: includes/views/permalink-manager-settings.php:73
|
481 |
-
msgid "Trailing slashes"
|
482 |
-
msgstr ""
|
483 |
-
|
484 |
-
#: includes/views/permalink-manager-settings.php:75
|
485 |
-
msgid "Use default settings"
|
486 |
-
msgstr ""
|
487 |
-
|
488 |
-
#: includes/views/permalink-manager-settings.php:75
|
489 |
-
msgid "Add trailing slashes"
|
490 |
-
msgstr ""
|
491 |
-
|
492 |
-
#: includes/views/permalink-manager-settings.php:75
|
493 |
-
msgid "Add trailing slashes (+ auto-redirect links without them)"
|
494 |
-
msgstr ""
|
495 |
-
|
496 |
-
#: includes/views/permalink-manager-settings.php:75
|
497 |
-
msgid "Remove trailing slashes"
|
498 |
-
msgstr ""
|
499 |
-
|
500 |
-
#: includes/views/permalink-manager-settings.php:75
|
501 |
-
msgid "Remove trailing slashes (+ auto-redirect links with them)"
|
502 |
-
msgstr ""
|
503 |
-
|
504 |
-
#: includes/views/permalink-manager-settings.php:76
|
505 |
-
msgid ""
|
506 |
-
"This option can be used to alter the native settings and control if trailing "
|
507 |
-
"slash should be added or removed from the end of posts & terms permalinks."
|
508 |
-
msgstr ""
|
509 |
-
|
510 |
-
#: includes/views/permalink-manager-settings.php:80
|
511 |
-
msgid "Force 404 on non-existing pagination pages"
|
512 |
-
msgstr ""
|
513 |
-
|
514 |
-
#: includes/views/permalink-manager-settings.php:82
|
515 |
-
msgid ""
|
516 |
-
"If enabled, the non-existing pagination pages (for single posts) will return "
|
517 |
-
"404 (\"Not Found\") error.<br /><strong>Please disable it, if you encounter "
|
518 |
-
"any problems with pagination pages or use custom pagination system.</strong>"
|
519 |
-
msgstr ""
|
520 |
-
|
521 |
-
#: includes/views/permalink-manager-settings.php:87
|
522 |
-
msgid "Advanced settings"
|
523 |
-
msgstr ""
|
524 |
-
|
525 |
-
#: includes/views/permalink-manager-settings.php:93
|
526 |
-
msgid "Automatically remove broken URIs"
|
527 |
-
msgstr ""
|
528 |
-
|
529 |
-
#: includes/views/permalink-manager-settings.php:95
|
530 |
#, php-format
|
531 |
msgid ""
|
532 |
-
"
|
533 |
-
"
|
534 |
-
"
|
535 |
-
|
536 |
-
|
537 |
-
#: includes/views/permalink-manager-settings.php:99
|
538 |
-
msgid "Fix language mismatch"
|
539 |
-
msgstr ""
|
540 |
-
|
541 |
-
#: includes/views/permalink-manager-settings.php:101
|
542 |
-
msgid ""
|
543 |
-
"If enabled, the plugin will load the adjacent translation of post when the "
|
544 |
-
"custom permalink is detected, but the language code in the URL does not "
|
545 |
-
"match the language code assigned to the post/term."
|
546 |
-
msgstr ""
|
547 |
-
|
548 |
-
#: includes/views/permalink-manager-settings.php:105
|
549 |
-
msgid "Force custom slugs"
|
550 |
-
msgstr ""
|
551 |
-
|
552 |
-
#: includes/views/permalink-manager-settings.php:107
|
553 |
-
msgid "No, use native slugs"
|
554 |
-
msgstr ""
|
555 |
-
|
556 |
-
#: includes/views/permalink-manager-settings.php:107
|
557 |
-
msgid "Yes, use post/term titles"
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: includes/views/permalink-manager-
|
561 |
-
msgid "
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: includes/views/permalink-manager-
|
|
|
565 |
msgid ""
|
566 |
-
"
|
567 |
-
"
|
568 |
-
"post or
|
569 |
-
msgstr ""
|
570 |
-
|
571 |
-
#: includes/views/permalink-manager-settings.php:112
|
572 |
-
msgid "Disable Permalink Manager functionalities"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/views/permalink-manager-
|
576 |
-
msgid ""
|
577 |
-
"Select the post types & taxonomies where the functionalities of Permalink "
|
578 |
-
"Manager should be completely disabled."
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: includes/views/permalink-manager-
|
582 |
-
msgid "
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: includes/views/permalink-manager-
|
586 |
-
|
|
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: includes/views/permalink-manager-
|
590 |
-
|
591 |
-
msgid ""
|
592 |
-
"All allowed <a href=\"%s\" target=\"_blank\">structure tags</a> are listed "
|
593 |
-
"below."
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: includes/views/permalink-manager-
|
597 |
-
|
598 |
-
|
599 |
-
"permastructures."
|
600 |
msgstr ""
|
601 |
|
602 |
-
#: includes/views/permalink-manager-
|
603 |
-
msgid ""
|
604 |
-
"<h5>Custom fields inside permastructures <small>(Permalink Manager Pro only)"
|
605 |
-
"</small></h5>"
|
606 |
msgstr ""
|
607 |
|
608 |
-
#: includes/views/permalink-manager-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
"with the full name of your custom field key."
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: includes/views/permalink-manager-
|
616 |
-
|
|
|
|
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: includes/views/permalink-manager-
|
620 |
-
|
|
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: includes/views/permalink-manager-
|
624 |
-
|
|
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: includes/views/permalink-manager-
|
628 |
-
|
629 |
-
|
630 |
-
"permastructure</strong>, so there is no need to use them within the fields. "
|
631 |
-
"To prevent the overlapping URLs problem please keep the permastructures "
|
632 |
-
"unique."
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/views/permalink-manager-
|
636 |
-
|
637 |
-
msgid ""
|
638 |
-
"The current permastructures settings will be applied <strong>only to the new "
|
639 |
-
"posts & terms</strong>. To apply the <strong>new permastructures to old "
|
640 |
-
"posts & terms</strong>, please use \"Regenerate/reset\" tool available <a "
|
641 |
-
"href=\"%s\">here</a>."
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: includes/views/permalink-manager-
|
645 |
-
msgid "
|
646 |
msgstr ""
|
647 |
|
648 |
#: includes/views/permalink-manager-pro-addons.php:99
|
649 |
msgid "Support"
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: includes/views/permalink-manager-pro-addons.php:122
|
653 |
-
#, php-format
|
654 |
-
msgid ""
|
655 |
-
"Your licence key expired! For more information please go to <a href=\"%s\" "
|
656 |
-
"target=\"_blank\">this page</a>."
|
657 |
-
msgstr ""
|
658 |
-
|
659 |
-
#: includes/views/permalink-manager-pro-addons.php:124
|
660 |
-
msgid "You own a lifetime licence key."
|
661 |
-
msgstr ""
|
662 |
-
|
663 |
#: includes/views/permalink-manager-pro-addons.php:126
|
664 |
-
#, php-format
|
665 |
-
msgid ""
|
666 |
-
"Your licence key is valid until %s. To prolong it please go to <a "
|
667 |
-
"href=\"%s\" target=\"_blank\">this page</a> for more information."
|
668 |
-
msgstr ""
|
669 |
-
|
670 |
-
#: includes/views/permalink-manager-pro-addons.php:128
|
671 |
-
msgid ""
|
672 |
-
"Please paste the licence key to access all Permalink Manager Pro updates!"
|
673 |
-
msgstr ""
|
674 |
-
|
675 |
-
#: includes/views/permalink-manager-pro-addons.php:133
|
676 |
msgid "Licence"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
680 |
msgid "Licence key"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
684 |
msgid ""
|
685 |
"The licence key allows you to access all the plugin updates & priority "
|
686 |
"support."
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
|
|
|
|
|
|
|
|
690 |
msgid "-- Use predefined words list --"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
694 |
msgid "Remove all words"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
698 |
msgid "Add the words from the list"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
702 |
msgid "Enable \"stop words\""
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
706 |
msgid "\"Stop words\" list"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
710 |
msgid "The words should be comma-separated."
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
714 |
-
#: includes/views/permalink-manager-pro-addons.php:228
|
715 |
-
msgid "Instructions"
|
716 |
-
msgstr ""
|
717 |
-
|
718 |
-
#: includes/views/permalink-manager-pro-addons.php:196
|
719 |
msgid ""
|
720 |
"If enabled, all selected \"stop words\" will be automatically removed from "
|
721 |
"default URIs."
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
725 |
msgid ""
|
726 |
"Each of the words can be removed and any new words can be added to the list. "
|
727 |
"You can also use a predefined list (available in 21 languages)."
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
731 |
msgid "Save"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
|
|
|
|
|
|
|
|
|
|
735 |
msgid "Deactivate after import"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
739 |
msgid ""
|
740 |
"If selected, \"Custom Permalinks\" plugin will be deactivated after its "
|
741 |
"custom URIs are imported."
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
745 |
msgid ""
|
746 |
"Please note that \"Custom Permalinks\" (if activated) may break the behavior "
|
747 |
"of this plugin."
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
751 |
msgid ""
|
752 |
"Therefore, it is recommended to disable \"Custom Permalink\" and import old "
|
753 |
"permalinks before using Permalink Manager Pro."
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
757 |
#, php-format
|
758 |
msgid "Import %d URIs"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
762 |
msgid "No custom URIs to import"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
766 |
msgid "Technical support"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
770 |
#, php-format
|
771 |
msgid ""
|
772 |
"To find the answers on frequently asked questions and information about how "
|
@@ -774,399 +666,529 @@ msgid ""
|
|
774 |
"Base</strong> using <a target=\"_blank\" href=\"%s\">this link</a>."
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
778 |
msgid ""
|
779 |
"If you still did not find the answer to your question, please send us your "
|
780 |
"question or a detailed description of your problem/issue to <a href=\"mailto:"
|
781 |
"support@permalinkmanager.pro\">support@permalinkmanager.pro</a>."
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
785 |
msgid ""
|
786 |
"To reduce the response time, please attach your licence key and if possible "
|
787 |
"also: URL address of your website and screenshots explaining the issue."
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
791 |
msgid "Suggestions/feedback"
|
792 |
msgstr ""
|
793 |
|
794 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
795 |
msgid ""
|
796 |
"If you would like to suggest a new functionality or leave us feedback, we "
|
797 |
"are open to all new ideas and would be grateful for all your comments!"
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
801 |
msgid ""
|
802 |
" Please send your remarks to <a href=\"mailto:contact@permalinkmanager.pro\">"
|
803 |
"contact@permalinkmanager.pro</a>."
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
807 |
msgid "Extra redirects (aliases)"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
811 |
msgid ""
|
812 |
"All URIs specified below will redirect the visitors to the custom URI "
|
813 |
"defined above in \"Current URI\" field."
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
817 |
msgid "sample/custom-uri"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
|
|
|
|
|
|
|
|
821 |
#, php-format
|
822 |
msgid ""
|
823 |
"<strong>Please use URIs only!</strong><br />For instance, to set-up a "
|
824 |
"redirect for <code>%s/old-uri</code> please use <code>old-uri</code>."
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
828 |
-
msgid "Add new redirect"
|
829 |
-
msgstr ""
|
830 |
-
|
831 |
-
#: includes/views/permalink-manager-pro-addons.php:313
|
832 |
msgid "Redirect this page to external URL"
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
836 |
msgid ""
|
837 |
"If not empty, the visitors trying to access this page will be redirected to "
|
838 |
"the URL specified below."
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
842 |
msgid "http://another-website.com/final-target-url"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: includes/views/permalink-manager-pro-addons.php:
|
846 |
msgid ""
|
847 |
"<strong>Please use full URLs!</strong><br />For instance, <code>http:"
|
848 |
"//another-website.com/final-target-url</code>."
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: includes/
|
852 |
-
msgid "
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: includes/
|
856 |
-
msgid "
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: includes/
|
860 |
-
msgid "
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: includes/
|
864 |
-
msgid "
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: includes/
|
868 |
-
msgid "
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: includes/
|
872 |
-
msgid "
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: includes/
|
876 |
-
msgid "
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: includes/
|
880 |
-
msgid "
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: includes/
|
884 |
-
msgid "
|
|
|
|
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: includes/
|
888 |
-
msgid "
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: includes/
|
892 |
-
msgid "
|
|
|
|
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: includes/
|
896 |
-
msgid "
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: includes/
|
900 |
-
msgid "
|
|
|
|
|
|
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/
|
904 |
-
msgid "
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: includes/
|
908 |
-
msgid "
|
|
|
|
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: includes/
|
912 |
-
msgid "
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/
|
916 |
-
msgid "
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: includes/
|
920 |
-
msgid "
|
|
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: includes/
|
924 |
-
msgid "
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/
|
928 |
-
msgid "
|
|
|
|
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/
|
932 |
-
msgid "
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: includes/
|
936 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
937 |
msgid ""
|
938 |
-
"
|
939 |
-
"
|
|
|
|
|
|
|
|
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
943 |
#, php-format
|
944 |
msgid ""
|
945 |
-
"
|
946 |
-
"
|
|
|
947 |
msgstr ""
|
948 |
|
949 |
-
#: includes/
|
950 |
-
msgid "
|
951 |
msgstr ""
|
952 |
|
953 |
-
#: includes/
|
954 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: includes/
|
958 |
msgid ""
|
959 |
-
"
|
960 |
-
"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: includes/
|
964 |
-
msgid "
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: includes/
|
968 |
-
msgid "
|
|
|
|
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: includes/
|
972 |
-
msgid "
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: includes/
|
976 |
-
msgid "No
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: includes/
|
980 |
-
msgid "
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
msgstr ""
|
989 |
|
990 |
-
#: includes/
|
991 |
-
|
992 |
-
|
993 |
-
msgid_plural "<strong>%d</strong> slugs were updated!"
|
994 |
-
msgstr[0] ""
|
995 |
-
msgstr[1] ""
|
996 |
|
997 |
-
#: includes/
|
998 |
-
|
999 |
-
msgid "<a %s>Click here</a> to go to the list of updated slugs"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
-
#: includes/
|
1003 |
-
msgid "
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: includes/
|
1007 |
-
msgid "
|
|
|
|
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: includes/
|
1011 |
-
|
1012 |
-
msgid "%d Custom URIs and %d Custom Redirects were removed!"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: includes/
|
1016 |
-
msgid "
|
|
|
|
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: includes/
|
1020 |
-
|
1021 |
-
msgid "URI \"%s\" was removed successfully!"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: includes/
|
1025 |
-
msgid "
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: includes/
|
1029 |
-
msgid "
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: includes/
|
1033 |
-
msgid "
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: includes/
|
1037 |
-
msgid "
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
msgid "Permalink Manager"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: includes/
|
1050 |
-
msgid "
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: includes/
|
1054 |
-
msgid "
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: includes/
|
1058 |
-
msgid "
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: includes/
|
1062 |
-
msgid "
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: includes/
|
1066 |
-
msgid "
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: includes/
|
1070 |
-
|
|
|
|
|
|
|
1071 |
msgid ""
|
1072 |
-
"
|
1073 |
-
"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: includes/
|
1077 |
-
|
1078 |
-
msgid "Title"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: includes/
|
1082 |
-
|
1083 |
-
msgid "Old URI"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/
|
1087 |
-
|
1088 |
-
msgid "New URI"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: includes/
|
1092 |
-
|
1093 |
-
msgid "Old Slug"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: includes/
|
1097 |
-
|
1098 |
-
msgid "New Slug"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: includes/
|
1102 |
-
|
|
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: includes/
|
1106 |
-
msgid "
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: includes/
|
1110 |
-
|
1111 |
-
msgid "Yes"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/
|
1115 |
-
|
1116 |
-
msgid "No"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
#: includes/
|
1120 |
-
|
1121 |
-
msgid "Use global settings [%s]"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: includes/
|
1125 |
-
msgid "
|
1126 |
msgstr ""
|
1127 |
|
1128 |
-
#: includes/
|
1129 |
-
|
|
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: includes/
|
1133 |
-
msgid ""
|
1134 |
-
"The custom URI can be edited only if 'Auto-update the URI' feature is not "
|
1135 |
-
"enabled."
|
1136 |
msgstr ""
|
1137 |
|
1138 |
-
#: includes/
|
1139 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1140 |
msgstr ""
|
1141 |
|
1142 |
-
#: includes/
|
|
|
1143 |
msgid ""
|
1144 |
-
"
|
1145 |
-
"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: includes/
|
1149 |
-
|
|
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: includes/
|
1153 |
-
msgid "
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: includes/
|
1157 |
-
msgid "
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: includes/
|
1161 |
-
msgid "
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: includes/
|
1165 |
-
msgid "
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: includes/
|
1169 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1170 |
msgstr ""
|
1171 |
|
1172 |
#. Name of the plugin
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: PACKAGE VERSION\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2019-10-04 10:34+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"
|
14 |
"Content-Transfer-Encoding: 8bit\n"
|
15 |
"X-Generator: Loco https://localise.biz/"
|
16 |
|
17 |
+
#: permalink-manager.php:198
|
18 |
#, php-format
|
19 |
msgid ""
|
20 |
"Get access to extra features: full taxonomy and WooCommerce support, "
|
23 |
"and save %s using \"%s\" coupon code!</strong> Valid until %s!"
|
24 |
msgstr ""
|
25 |
|
26 |
+
#: includes/core/permalink-manager-third-parties.php:593
|
27 |
+
msgid "\"Custom Permalinks\" URIs were imported!"
|
28 |
msgstr ""
|
29 |
|
30 |
+
#: includes/core/permalink-manager-third-parties.php:596
|
31 |
+
msgid "No \"Custom Permalinks\" URIs were imported!"
|
32 |
msgstr ""
|
33 |
|
34 |
+
#. Name of the plugin
|
35 |
+
#: includes/core/permalink-manager-third-parties.php:855
|
36 |
+
#: includes/core/permalink-manager-gutenberg.php:14
|
37 |
+
#: includes/core/permalink-manager-admin-functions.php:119
|
38 |
+
#: includes/core/permalink-manager-admin-functions.php:119
|
39 |
+
#: includes/core/permalink-manager-admin-functions.php:719
|
40 |
+
#: includes/core/permalink-manager-admin-functions.php:796
|
41 |
+
#: includes/core/permalink-manager-admin-functions.php:801
|
42 |
+
#: includes/core/permalink-manager-admin-functions.php:802
|
43 |
+
msgid "Permalink Manager"
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: includes/core/permalink-manager-third-parties.php:859
|
47 |
+
#: includes/core/permalink-manager-uri-functions-tax.php:475
|
48 |
+
#: includes/views/permalink-manager-tools.php:70
|
49 |
+
msgid "Custom URI"
|
|
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: includes/core/permalink-manager-third-parties.php:860
|
53 |
+
#, php-format
|
54 |
+
msgid ""
|
55 |
+
"If empty, a default permalink based on your current <a href=\"%s\" "
|
56 |
+
"target=\"_blank\">permastructure settings</a> will be used."
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: includes/core/permalink-manager-uri-functions-tax.php:476
|
60 |
+
msgid "Clear/leave the field empty to use the default permalink."
|
|
|
|
|
|
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: includes/core/permalink-manager-uri-functions-tax.php:508
|
64 |
+
#: includes/core/permalink-manager-admin-functions.php:723
|
65 |
+
#: includes/core/permalink-manager-admin-functions.php:819
|
66 |
+
#: includes/core/permalink-manager-uri-functions-post.php:650
|
67 |
+
msgid "Current URI"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: includes/core/permalink-manager-admin-functions.php:159
|
71 |
+
msgid "URI Editor"
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: includes/core/permalink-manager-admin-functions.php:160
|
75 |
+
#: includes/views/permalink-manager-settings.php:14
|
76 |
+
msgid "Settings"
|
|
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/core/permalink-manager-admin-functions.php:172
|
80 |
+
msgid "Documentation"
|
|
|
|
|
|
|
|
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/core/permalink-manager-admin-functions.php:176
|
84 |
+
msgid "Buy Permalink Manager Pro"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/core/permalink-manager-admin-functions.php:263
|
88 |
+
msgid "Select all"
|
|
|
|
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/core/permalink-manager-admin-functions.php:264
|
92 |
+
msgid "Unselect all"
|
|
|
|
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/core/permalink-manager-admin-functions.php:379
|
96 |
+
msgid "Permastructure translations"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/core/permalink-manager-admin-functions.php:380
|
100 |
msgid ""
|
101 |
+
"If you would like to translate the permastructures and set-up different "
|
102 |
+
"permalink structure per language, please fill in the fields below. Otherwise "
|
103 |
+
"the permastructure set for default language (see field above) will be "
|
104 |
+
"applied."
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/core/permalink-manager-admin-functions.php:397
|
108 |
+
msgid "Default permastructure"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/core/permalink-manager-admin-functions.php:398
|
112 |
+
msgid "Restore default permastructure"
|
|
|
|
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/core/permalink-manager-admin-functions.php:404
|
116 |
+
msgid "Permastructure settings"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/core/permalink-manager-admin-functions.php:405
|
120 |
+
msgid "Do not automatically append the slug"
|
|
|
|
|
|
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/core/permalink-manager-admin-functions.php:413
|
124 |
+
msgid "Show additional settings"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/core/permalink-manager-admin-functions.php:559
|
128 |
+
msgid "Donate"
|
|
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: includes/core/permalink-manager-admin-functions.php:560
|
132 |
+
msgid "by Maciej Bis"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/core/permalink-manager-admin-functions.php:572
|
136 |
+
msgid "Upgrade to PRO"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/core/permalink-manager-admin-functions.php:639
|
140 |
+
#: includes/core/permalink-manager-admin-functions.php:666
|
141 |
+
msgid "Title"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: includes/core/permalink-manager-admin-functions.php:641
|
145 |
+
#: includes/core/permalink-manager-admin-functions.php:668
|
146 |
+
msgid "Old Slug"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: includes/core/permalink-manager-admin-functions.php:642
|
150 |
+
#: includes/core/permalink-manager-admin-functions.php:669
|
151 |
+
msgid "New Slug"
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: includes/core/permalink-manager-admin-functions.php:644
|
155 |
+
#: includes/core/permalink-manager-admin-functions.php:671
|
156 |
+
msgid "Old URI"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: includes/core/permalink-manager-admin-functions.php:645
|
160 |
+
#: includes/core/permalink-manager-admin-functions.php:672
|
161 |
+
msgid "New URI"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/core/permalink-manager-admin-functions.php:666
|
165 |
+
msgid "Show more details"
|
|
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: includes/core/permalink-manager-admin-functions.php:679
|
169 |
+
msgid "List of updated items"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: includes/core/permalink-manager-admin-functions.php:692
|
173 |
+
#, php-format
|
174 |
+
msgid "<strong class=\"updated_count\">%d</strong> slug was updated!"
|
175 |
+
msgid_plural "<strong class=\"updated_count\">%d</strong> slugs were updated!"
|
176 |
+
msgstr[0] ""
|
177 |
+
msgstr[1] ""
|
178 |
|
179 |
+
#: includes/core/permalink-manager-admin-functions.php:693
|
180 |
+
#, php-format
|
181 |
+
msgid "<a %s>Click here</a> to go to the list of updated slugs"
|
|
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: includes/core/permalink-manager-admin-functions.php:697
|
185 |
+
#: includes/core/permalink-manager-actions.php:100
|
186 |
+
msgid "<strong>No slugs</strong> were updated!"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: includes/core/permalink-manager-admin-functions.php:766
|
190 |
+
#: includes/core/permalink-manager-admin-functions.php:770
|
191 |
+
msgid "Yes"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: includes/core/permalink-manager-admin-functions.php:766
|
195 |
+
#: includes/core/permalink-manager-admin-functions.php:769
|
196 |
+
msgid "No"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: includes/core/permalink-manager-admin-functions.php:768
|
200 |
+
#, php-format
|
201 |
+
msgid "Use global settings [%s]"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/core/permalink-manager-admin-functions.php:801
|
205 |
+
msgid "Close: "
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/core/permalink-manager-admin-functions.php:813
|
209 |
+
msgid "The custom URI cannot be edited on frontpage."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/core/permalink-manager-admin-functions.php:820
|
213 |
+
msgid ""
|
214 |
+
"If custom URI is not defined, a default URI will be set (see below). The "
|
215 |
+
"custom URI can be edited only if 'Auto-update the URI' feature is not "
|
216 |
+
"enabled."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: includes/core/permalink-manager-admin-functions.php:829
|
220 |
+
msgid "Native slug"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: includes/core/permalink-manager-admin-functions.php:830
|
224 |
+
msgid ""
|
225 |
+
"The native slug is by default automatically used in native permalinks (when "
|
226 |
+
"Permalink Manager is disabled)."
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/core/permalink-manager-admin-functions.php:840
|
230 |
+
msgid "Auto-update the URI"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: includes/core/permalink-manager-admin-functions.php:841
|
234 |
+
msgid ""
|
235 |
+
"If enabled, the 'Current URI' field will be automatically changed to "
|
236 |
+
"'Default URI' (displayed below) after the post is saved or updated."
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: includes/core/permalink-manager-admin-functions.php:849
|
240 |
+
msgid "Default URI"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: includes/core/permalink-manager-admin-functions.php:850
|
244 |
+
msgid "Restore Default URI"
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: includes/core/permalink-manager-admin-functions.php:860
|
248 |
+
msgid "Automatic redirect for native URI enabled:"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: includes/core/permalink-manager-admin-functions.php:871
|
252 |
+
#, php-format
|
253 |
+
msgid ""
|
254 |
+
"<span><strong>Need more functionalities and dedicated support?</strong> Buy "
|
255 |
+
"Permalink Manager Pro and apply <a href=\"https://permalinkmanager.pro/buy-"
|
256 |
+
"permalink-manager-pro/\">PMLITE coupon code</a> to get 10% off.</a></span>"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: includes/core/permalink-manager-admin-functions.php:882
|
260 |
+
msgid "Save permalink"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: includes/core/permalink-manager-admin-functions.php:909
|
264 |
+
msgid "Manage redirects"
|
265 |
msgstr ""
|
266 |
|
267 |
+
#: includes/core/permalink-manager-admin-functions.php:1001
|
268 |
+
msgid "URI is already in use, please select another one!"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: includes/core/permalink-manager-admin-functions.php:1050
|
272 |
+
#, php-format
|
273 |
+
msgid ""
|
274 |
+
"This functionality is available only in <a href=\"%s\" target=\"_blank\">"
|
275 |
+
"Permalink Manager Pro</a>."
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: includes/core/permalink-manager-pro-functions.php:120
|
279 |
+
#: includes/core/permalink-manager-pro-functions.php:146
|
280 |
+
#, php-format
|
281 |
+
msgid ""
|
282 |
+
"Please paste the licence key to access all Permalink Manager Pro updates & "
|
283 |
+
"features <a href=\"%s\" target=\"_blank\">on this page</a>."
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: includes/core/permalink-manager-pro-functions.php:125
|
287 |
msgid ""
|
288 |
+
"Expiration date could not be downloaded at this moment. Please try again in "
|
289 |
+
"a few minutes."
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: includes/core/permalink-manager-pro-functions.php:130
|
293 |
+
msgid "Your Permalink Manager Pro licence key is invalid!"
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: includes/core/permalink-manager-pro-functions.php:135
|
297 |
+
#, php-format
|
298 |
+
msgid ""
|
299 |
+
"Your Permalink Manager Pro licence key expired! To restore access to plugin "
|
300 |
+
"updates & technical support please go to <a href=\"%s\" target=\"_blank\">"
|
301 |
+
"this page</a>."
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: includes/core/permalink-manager-pro-functions.php:140
|
305 |
+
msgid "You own a lifetime licence key."
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/core/permalink-manager-pro-functions.php:143
|
309 |
+
#, php-format
|
310 |
+
msgid ""
|
311 |
+
"Your licence key is valid until %s.<br />To prolong it please go to <a "
|
312 |
+
"href=\"%s\" target=\"_blank\">this page</a> for more information."
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: includes/core/permalink-manager-pro-functions.php:168
|
316 |
+
msgid "Arabic"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: includes/core/permalink-manager-pro-functions.php:169
|
320 |
+
msgid "Chinese"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: includes/core/permalink-manager-pro-functions.php:170
|
324 |
+
msgid "Danish"
|
|
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: includes/core/permalink-manager-pro-functions.php:171
|
328 |
+
msgid "Dutch"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: includes/core/permalink-manager-pro-functions.php:172
|
332 |
+
msgid "English"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: includes/core/permalink-manager-pro-functions.php:173
|
336 |
+
msgid "Finnish"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: includes/core/permalink-manager-pro-functions.php:174
|
340 |
+
msgid "French"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: includes/core/permalink-manager-pro-functions.php:175
|
344 |
+
msgid "German"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: includes/core/permalink-manager-pro-functions.php:176
|
348 |
+
msgid "Hebrew"
|
|
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: includes/core/permalink-manager-pro-functions.php:177
|
352 |
+
msgid "Hindi"
|
|
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: includes/core/permalink-manager-pro-functions.php:178
|
356 |
+
msgid "Italian"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: includes/core/permalink-manager-pro-functions.php:179
|
360 |
+
msgid "Japanese"
|
|
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: includes/core/permalink-manager-pro-functions.php:180
|
364 |
+
msgid "Korean"
|
|
|
|
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: includes/core/permalink-manager-pro-functions.php:181
|
368 |
+
msgid "Norwegian"
|
|
|
|
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: includes/core/permalink-manager-pro-functions.php:182
|
372 |
+
msgid "Persian"
|
|
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/core/permalink-manager-pro-functions.php:183
|
376 |
+
msgid "Polish"
|
|
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/core/permalink-manager-pro-functions.php:184
|
380 |
+
msgid "Portuguese"
|
|
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/core/permalink-manager-pro-functions.php:185
|
384 |
+
msgid "Russian"
|
|
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: includes/core/permalink-manager-pro-functions.php:186
|
388 |
+
msgid "Spanish"
|
|
|
|
|
|
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: includes/core/permalink-manager-pro-functions.php:187
|
392 |
+
msgid "Swedish"
|
|
|
|
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: includes/core/permalink-manager-pro-functions.php:188
|
396 |
+
msgid "Turkish"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/core/permalink-manager-pro-functions.php:470
|
400 |
+
msgid "Coupon Link"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: includes/core/permalink-manager-pro-functions.php:491
|
404 |
+
msgid "Coupon URI"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: includes/core/permalink-manager-pro-functions.php:492
|
408 |
+
msgid ""
|
409 |
+
"The URIs are case-insensitive, eg. <strong>BLACKFRIDAY</strong> and <strong>"
|
410 |
+
"blackfriday</strong> are equivalent."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/core/permalink-manager-pro-functions.php:503
|
414 |
+
msgid "Coupon Full URL"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: includes/core/permalink-manager-actions.php:90
|
418 |
+
msgid "The settings are saved!"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: includes/core/permalink-manager-actions.php:355
|
422 |
+
#, php-format
|
423 |
+
msgid "%d Custom URIs and %d Custom Redirects were removed!"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: includes/core/permalink-manager-actions.php:357
|
427 |
+
msgid "No Custom URIs or Custom Redirects were removed!"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: includes/core/permalink-manager-actions.php:497
|
431 |
+
#, php-format
|
432 |
+
msgid "URI \"%s\" was removed successfully!"
|
433 |
msgstr ""
|
434 |
|
435 |
+
#: includes/core/permalink-manager-actions.php:506
|
436 |
+
msgid "Broken redirects were removed successfully!"
|
|
|
|
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: includes/core/permalink-manager-actions.php:511
|
440 |
+
msgid "URI and/or custom redirects does not exist or were already removed!"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/core/permalink-manager-actions.php:525
|
444 |
+
msgid "The redirect was removed successfully!"
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: includes/core/permalink-manager-actions.php:560
|
448 |
+
msgid "Sitemaps were updated!"
|
|
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: includes/views/permalink-manager-permastructs.php:15
|
452 |
+
msgid "Permastructures"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/views/permalink-manager-permastructs.php:31
|
456 |
+
#: includes/views/permalink-manager-tools.php:162
|
457 |
+
#: includes/views/permalink-manager-tools.php:239
|
458 |
+
msgid "Post types"
|
459 |
msgstr ""
|
460 |
|
461 |
+
#: includes/views/permalink-manager-permastructs.php:36
|
462 |
+
#: includes/views/permalink-manager-tools.php:163
|
463 |
+
#: includes/views/permalink-manager-tools.php:240
|
464 |
+
msgid "Taxonomies"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/views/permalink-manager-permastructs.php:46
|
468 |
+
msgid "WooCommerce"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/views/permalink-manager-permastructs.php:74
|
472 |
+
#: includes/views/permalink-manager-pro-addons.php:189
|
473 |
+
#: includes/views/permalink-manager-pro-addons.php:222
|
474 |
+
msgid "Instructions"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: includes/views/permalink-manager-permastructs.php:75
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
#, php-format
|
479 |
msgid ""
|
480 |
+
"The current permastructures settings will be applied <strong>only to the new "
|
481 |
+
"posts & terms</strong>. To apply the <strong>new permastructures to existing "
|
482 |
+
"posts and terms</strong>, please regenerate the custom permalinks <a "
|
483 |
+
"href=\"%s\">here</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: includes/views/permalink-manager-permastructs.php:77
|
487 |
+
msgid "Permastructure tags"
|
488 |
msgstr ""
|
489 |
|
490 |
+
#: includes/views/permalink-manager-permastructs.php:78
|
491 |
+
#, php-format
|
492 |
msgid ""
|
493 |
+
"All allowed <a href=\"%s\" target=\"_blank\">permastructure tags</a> are "
|
494 |
+
"listed below. Please note that some of them can be used only for particular "
|
495 |
+
"post types or taxonomies."
|
|
|
|
|
|
|
|
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: includes/views/permalink-manager-permastructs.php:81
|
499 |
+
msgid "Save permastructures"
|
|
|
|
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: includes/views/permalink-manager-uri-editor-post.php:55
|
503 |
+
msgid "Post title"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: includes/views/permalink-manager-uri-editor-post.php:56
|
507 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:52
|
508 |
+
msgid "Full URI & Permalink"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/views/permalink-manager-uri-editor-post.php:89
|
512 |
+
msgid "Inherit (Attachment)"
|
|
|
|
|
|
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/views/permalink-manager-uri-editor-post.php:106
|
516 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:95
|
517 |
+
msgid "Slug"
|
|
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/views/permalink-manager-uri-editor-post.php:107
|
521 |
+
msgid "Post status"
|
|
|
|
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: includes/views/permalink-manager-uri-editor-post.php:112
|
525 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:100
|
526 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:100
|
527 |
+
msgid "Edit"
|
|
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: includes/views/permalink-manager-uri-editor-post.php:113
|
531 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:101
|
532 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:101
|
533 |
+
msgid "View"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: includes/views/permalink-manager-uri-editor-post.php:141
|
537 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:138
|
538 |
+
msgid "Save all the URIs below"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: includes/views/permalink-manager-uri-editor-post.php:142
|
542 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:139
|
543 |
+
msgid "Save all the URIs above"
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: includes/views/permalink-manager-uri-editor-post.php:150
|
547 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:147
|
548 |
+
msgid "Search"
|
|
|
|
|
|
|
549 |
msgstr ""
|
550 |
|
551 |
+
#: includes/views/permalink-manager-uri-editor-post.php:166
|
552 |
+
msgid "All dates"
|
|
|
|
|
|
|
|
|
|
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: includes/views/permalink-manager-uri-editor-post.php:175
|
556 |
+
msgid "Filter"
|
557 |
msgstr ""
|
558 |
|
559 |
#: includes/views/permalink-manager-pro-addons.php:99
|
560 |
msgid "Support"
|
561 |
msgstr ""
|
562 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
563 |
#: includes/views/permalink-manager-pro-addons.php:126
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
564 |
msgid "Licence"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/views/permalink-manager-pro-addons.php:132
|
568 |
msgid "Licence key"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/views/permalink-manager-pro-addons.php:133
|
572 |
msgid ""
|
573 |
"The licence key allows you to access all the plugin updates & priority "
|
574 |
"support."
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: includes/views/permalink-manager-pro-addons.php:134
|
578 |
+
msgid "Check the expiration date."
|
579 |
+
msgstr ""
|
580 |
+
|
581 |
+
#: includes/views/permalink-manager-pro-addons.php:158
|
582 |
msgid "-- Use predefined words list --"
|
583 |
msgstr ""
|
584 |
|
585 |
+
#: includes/views/permalink-manager-pro-addons.php:161
|
586 |
msgid "Remove all words"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: includes/views/permalink-manager-pro-addons.php:163
|
590 |
msgid "Add the words from the list"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: includes/views/permalink-manager-pro-addons.php:171
|
594 |
msgid "Enable \"stop words\""
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: includes/views/permalink-manager-pro-addons.php:177
|
598 |
msgid "\"Stop words\" list"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: includes/views/permalink-manager-pro-addons.php:181
|
602 |
msgid "The words should be comma-separated."
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: includes/views/permalink-manager-pro-addons.php:190
|
|
|
|
|
|
|
|
|
|
|
606 |
msgid ""
|
607 |
"If enabled, all selected \"stop words\" will be automatically removed from "
|
608 |
"default URIs."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/views/permalink-manager-pro-addons.php:191
|
612 |
msgid ""
|
613 |
"Each of the words can be removed and any new words can be added to the list. "
|
614 |
"You can also use a predefined list (available in 21 languages)."
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: includes/views/permalink-manager-pro-addons.php:193
|
618 |
msgid "Save"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: includes/views/permalink-manager-pro-addons.php:213
|
622 |
+
#: includes/views/permalink-manager-tools.php:34
|
623 |
+
msgid "Custom Permalinks"
|
624 |
+
msgstr ""
|
625 |
+
|
626 |
+
#: includes/views/permalink-manager-pro-addons.php:214
|
627 |
msgid "Deactivate after import"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: includes/views/permalink-manager-pro-addons.php:217
|
631 |
msgid ""
|
632 |
"If selected, \"Custom Permalinks\" plugin will be deactivated after its "
|
633 |
"custom URIs are imported."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/views/permalink-manager-pro-addons.php:223
|
637 |
msgid ""
|
638 |
"Please note that \"Custom Permalinks\" (if activated) may break the behavior "
|
639 |
"of this plugin."
|
640 |
msgstr ""
|
641 |
|
642 |
+
#: includes/views/permalink-manager-pro-addons.php:224
|
643 |
msgid ""
|
644 |
"Therefore, it is recommended to disable \"Custom Permalink\" and import old "
|
645 |
"permalinks before using Permalink Manager Pro."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: includes/views/permalink-manager-pro-addons.php:229
|
649 |
#, php-format
|
650 |
msgid "Import %d URIs"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: includes/views/permalink-manager-pro-addons.php:234
|
654 |
msgid "No custom URIs to import"
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: includes/views/permalink-manager-pro-addons.php:247
|
658 |
msgid "Technical support"
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: includes/views/permalink-manager-pro-addons.php:248
|
662 |
#, php-format
|
663 |
msgid ""
|
664 |
"To find the answers on frequently asked questions and information about how "
|
666 |
"Base</strong> using <a target=\"_blank\" href=\"%s\">this link</a>."
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: includes/views/permalink-manager-pro-addons.php:249
|
670 |
msgid ""
|
671 |
"If you still did not find the answer to your question, please send us your "
|
672 |
"question or a detailed description of your problem/issue to <a href=\"mailto:"
|
673 |
"support@permalinkmanager.pro\">support@permalinkmanager.pro</a>."
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: includes/views/permalink-manager-pro-addons.php:250
|
677 |
msgid ""
|
678 |
"To reduce the response time, please attach your licence key and if possible "
|
679 |
"also: URL address of your website and screenshots explaining the issue."
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: includes/views/permalink-manager-pro-addons.php:252
|
683 |
msgid "Suggestions/feedback"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: includes/views/permalink-manager-pro-addons.php:253
|
687 |
msgid ""
|
688 |
"If you would like to suggest a new functionality or leave us feedback, we "
|
689 |
"are open to all new ideas and would be grateful for all your comments!"
|
690 |
msgstr ""
|
691 |
|
692 |
+
#: includes/views/permalink-manager-pro-addons.php:254
|
693 |
msgid ""
|
694 |
" Please send your remarks to <a href=\"mailto:contact@permalinkmanager.pro\">"
|
695 |
"contact@permalinkmanager.pro</a>."
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: includes/views/permalink-manager-pro-addons.php:269
|
699 |
msgid "Extra redirects (aliases)"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: includes/views/permalink-manager-pro-addons.php:270
|
703 |
msgid ""
|
704 |
"All URIs specified below will redirect the visitors to the custom URI "
|
705 |
"defined above in \"Current URI\" field."
|
706 |
msgstr ""
|
707 |
|
708 |
+
#: includes/views/permalink-manager-pro-addons.php:276
|
709 |
msgid "sample/custom-uri"
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: includes/views/permalink-manager-pro-addons.php:293
|
713 |
+
msgid "Add new redirect"
|
714 |
+
msgstr ""
|
715 |
+
|
716 |
+
#: includes/views/permalink-manager-pro-addons.php:298
|
717 |
#, php-format
|
718 |
msgid ""
|
719 |
"<strong>Please use URIs only!</strong><br />For instance, to set-up a "
|
720 |
"redirect for <code>%s/old-uri</code> please use <code>old-uri</code>."
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/views/permalink-manager-pro-addons.php:307
|
|
|
|
|
|
|
|
|
724 |
msgid "Redirect this page to external URL"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/views/permalink-manager-pro-addons.php:308
|
728 |
msgid ""
|
729 |
"If not empty, the visitors trying to access this page will be redirected to "
|
730 |
"the URL specified below."
|
731 |
msgstr ""
|
732 |
|
733 |
+
#: includes/views/permalink-manager-pro-addons.php:312
|
734 |
msgid "http://another-website.com/final-target-url"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: includes/views/permalink-manager-pro-addons.php:316
|
738 |
msgid ""
|
739 |
"<strong>Please use full URLs!</strong><br />For instance, <code>http:"
|
740 |
"//another-website.com/final-target-url</code>."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: includes/views/permalink-manager-uri-editor.php:28
|
744 |
+
msgid "URI editor"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/views/permalink-manager-uri-editor.php:83
|
748 |
+
msgid "Apply"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/views/permalink-manager-uri-editor.php:89
|
752 |
+
msgid "Per page"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/views/permalink-manager-uri-editor.php:94
|
756 |
+
msgid "Post statuses"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:51
|
760 |
+
msgid "Term title"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/views/permalink-manager-uri-editor-tax.php:53
|
764 |
+
msgid "Count"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/views/permalink-manager-settings.php:33
|
768 |
+
msgid "General settings"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/views/permalink-manager-settings.php:39
|
772 |
+
msgid "Auto-update permalinks"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: includes/views/permalink-manager-settings.php:41
|
776 |
+
msgid ""
|
777 |
+
"If enabled, the custom permalinks will be automatically updated every time "
|
778 |
+
"the post is saved or updated."
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: includes/views/permalink-manager-settings.php:45
|
782 |
+
msgid "Show \"Native slug\" field"
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: includes/views/permalink-manager-settings.php:47
|
786 |
+
msgid ""
|
787 |
+
"If enabled, it would be possible to edit the native slug via URI Editor on "
|
788 |
+
"single post/term edit page."
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: includes/views/permalink-manager-settings.php:51
|
792 |
+
msgid "Force 404 on non-existing pagination pages"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/views/permalink-manager-settings.php:53
|
796 |
+
msgid ""
|
797 |
+
"If enabled, the non-existing pagination pages (for single posts) will return "
|
798 |
+
"404 (\"Not Found\") error.<br /><strong>Please disable it, if you encounter "
|
799 |
+
"any problems with pagination pages or use custom pagination system.</strong>"
|
800 |
msgstr ""
|
801 |
|
802 |
+
#: includes/views/permalink-manager-settings.php:57
|
803 |
+
msgid "Force HTTPS in URLs"
|
804 |
msgstr ""
|
805 |
|
806 |
+
#: includes/views/permalink-manager-settings.php:59
|
807 |
+
msgid ""
|
808 |
+
"<strong>Please disable it, if you encounter any redirect loop issues."
|
809 |
+
"</strong>"
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: includes/views/permalink-manager-settings.php:64
|
813 |
+
msgid "SEO functions"
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: includes/views/permalink-manager-settings.php:70
|
817 |
+
msgid "Canonical redirect"
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: includes/views/permalink-manager-settings.php:72
|
821 |
+
msgid ""
|
822 |
+
"This function allows Wordpress to correct the URLs used by the visitors."
|
823 |
msgstr ""
|
824 |
|
825 |
+
#: includes/views/permalink-manager-settings.php:76
|
826 |
+
msgid "Auto-create \"Extra Redirects\" for old version of permalinks"
|
827 |
msgstr ""
|
828 |
|
829 |
+
#: includes/views/permalink-manager-settings.php:80
|
830 |
+
msgid ""
|
831 |
+
"If enabled, the redirects will be automatially created for old custom "
|
832 |
+
"permalinks, after posts or terms URLs are changed."
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/views/permalink-manager-settings.php:84
|
836 |
+
msgid "Redirect"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: includes/views/permalink-manager-settings.php:86
|
840 |
+
msgid "Disable"
|
841 |
+
msgstr ""
|
842 |
+
|
843 |
+
#: includes/views/permalink-manager-settings.php:86
|
844 |
+
msgid "Enable \"301 redirect\""
|
845 |
+
msgstr ""
|
846 |
+
|
847 |
+
#: includes/views/permalink-manager-settings.php:86
|
848 |
+
msgid "Enable \"302 redirect\""
|
849 |
+
msgstr ""
|
850 |
+
|
851 |
+
#: includes/views/permalink-manager-settings.php:87
|
852 |
msgid ""
|
853 |
+
"If enabled - the visitors will be redirected from native permalinks to your "
|
854 |
+
"custom permalinks."
|
855 |
+
msgstr ""
|
856 |
+
|
857 |
+
#: includes/views/permalink-manager-settings.php:91
|
858 |
+
msgid "Trailing slashes"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: includes/views/permalink-manager-settings.php:93
|
862 |
+
msgid "Use default settings"
|
863 |
+
msgstr ""
|
864 |
+
|
865 |
+
#: includes/views/permalink-manager-settings.php:93
|
866 |
+
msgid "Add trailing slashes"
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
#: includes/views/permalink-manager-settings.php:93
|
870 |
+
msgid "Add trailing slashes (+ auto-redirect links without them)"
|
871 |
+
msgstr ""
|
872 |
+
|
873 |
+
#: includes/views/permalink-manager-settings.php:93
|
874 |
+
msgid "Remove trailing slashes"
|
875 |
+
msgstr ""
|
876 |
+
|
877 |
+
#: includes/views/permalink-manager-settings.php:93
|
878 |
+
msgid "Remove trailing slashes (+ auto-redirect links with them)"
|
879 |
+
msgstr ""
|
880 |
+
|
881 |
+
#: includes/views/permalink-manager-settings.php:94
|
882 |
+
msgid ""
|
883 |
+
"This option can be used to alter the native settings and control if trailing "
|
884 |
+
"slash should be added or removed from the end of posts & terms permalinks."
|
885 |
+
msgstr ""
|
886 |
+
|
887 |
+
#: includes/views/permalink-manager-settings.php:99
|
888 |
+
msgid "Advanced settings"
|
889 |
+
msgstr ""
|
890 |
+
|
891 |
+
#: includes/views/permalink-manager-settings.php:105
|
892 |
+
msgid "Automatically remove broken URIs"
|
893 |
+
msgstr ""
|
894 |
+
|
895 |
+
#: includes/views/permalink-manager-settings.php:107
|
896 |
#, php-format
|
897 |
msgid ""
|
898 |
+
"If enabled, the custom URIs assigned to removed posts & terms will be "
|
899 |
+
"automatically removed.<br />To manually remove the duplicates please go <a "
|
900 |
+
"href=\"%s\">to this page</a>."
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: includes/views/permalink-manager-settings.php:111
|
904 |
+
msgid "Fix language mismatch"
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: includes/views/permalink-manager-settings.php:113
|
908 |
+
msgid ""
|
909 |
+
"If enabled, the plugin will load the adjacent translation of post when the "
|
910 |
+
"custom permalink is detected, but the language code in the URL does not "
|
911 |
+
"match the language code assigned to the post/term."
|
912 |
+
msgstr ""
|
913 |
+
|
914 |
+
#: includes/views/permalink-manager-settings.php:117
|
915 |
+
msgid "Disable support for WP All Import"
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: includes/views/permalink-manager-settings.php:119
|
919 |
msgid ""
|
920 |
+
"If checked, the custom URIs will not be assigned to the posts imported by Wp "
|
921 |
+
"All Import Pro plugin."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: includes/views/permalink-manager-settings.php:123
|
925 |
+
msgid "Yoast SEO breadcrumbs"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/views/permalink-manager-settings.php:125
|
929 |
+
msgid ""
|
930 |
+
"If checked, the Yoast SEO breadcrumbs will be filtered by Permalink Manager "
|
931 |
+
"to mimic the current URL structure."
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: includes/views/permalink-manager-settings.php:129
|
935 |
+
msgid "Use actual post/term titles (Force custom slugs)"
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: includes/views/permalink-manager-settings.php:131
|
939 |
+
msgid "No, use native slugs"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: includes/views/permalink-manager-settings.php:131
|
943 |
+
msgid "Yes, use post/term titles"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: includes/views/permalink-manager-settings.php:132
|
947 |
+
msgid ""
|
948 |
+
"If enabled, the slugs in the default custom permalinks will be recreated "
|
949 |
+
"from the post titles.<br />This may cause permalinks duplicates when the "
|
950 |
+
"post or term title is used more than once."
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: includes/views/permalink-manager-settings.php:136
|
954 |
+
msgid "Strip special characters from slugs"
|
955 |
+
msgstr ""
|
|
|
|
|
|
|
956 |
|
957 |
+
#: includes/views/permalink-manager-settings.php:138
|
958 |
+
msgid "Yes, use native settings"
|
|
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/views/permalink-manager-settings.php:138
|
962 |
+
msgid "No, keep special characters (.|_+) in the slugs"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/views/permalink-manager-settings.php:139
|
966 |
+
msgid ""
|
967 |
+
"If enabled only alphanumeric characters, underscores and dashes will be "
|
968 |
+
"allowed for post/term slugs."
|
969 |
msgstr ""
|
970 |
|
971 |
+
#: includes/views/permalink-manager-settings.php:143
|
972 |
+
msgid "Exclude content types"
|
|
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: includes/views/permalink-manager-settings.php:145
|
976 |
+
msgid ""
|
977 |
+
"Permalink Manager will ignore and not filter the custom permalinks of all "
|
978 |
+
"selected above post types & taxonomies."
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: includes/views/permalink-manager-settings.php:149
|
982 |
+
msgid "URI Editor role capability"
|
|
|
983 |
msgstr ""
|
984 |
|
985 |
+
#: includes/views/permalink-manager-settings.php:150
|
986 |
+
msgid "Administrator (edit_theme_options)"
|
987 |
msgstr ""
|
988 |
|
989 |
+
#: includes/views/permalink-manager-settings.php:150
|
990 |
+
msgid "Editor (publish_pages)"
|
991 |
msgstr ""
|
992 |
|
993 |
+
#: includes/views/permalink-manager-settings.php:150
|
994 |
+
msgid "Author (publish_posts)"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: includes/views/permalink-manager-settings.php:150
|
998 |
+
msgid "Contributor (edit_posts)"
|
999 |
msgstr ""
|
1000 |
|
1001 |
+
#: includes/views/permalink-manager-settings.php:151
|
1002 |
+
#, php-format
|
1003 |
+
msgid ""
|
1004 |
+
"Only the users who have selected capability will be able to access URI "
|
1005 |
+
"Editor.<br />The list of capabilities <a href=\"%s\" target=\"_blank\">can "
|
1006 |
+
"be found here</a>."
|
|
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: includes/views/permalink-manager-settings.php:157
|
1010 |
+
msgid "Save settings"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
+
#: includes/views/permalink-manager-tools.php:15
|
1014 |
+
msgid "Tools"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: includes/views/permalink-manager-tools.php:18
|
1018 |
+
msgid "Permalink Duplicates"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: includes/views/permalink-manager-tools.php:22
|
1022 |
+
msgid "Find & Replace"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: includes/views/permalink-manager-tools.php:26
|
1026 |
+
msgid "Regenerate/Reset"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: includes/views/permalink-manager-tools.php:30
|
1030 |
+
msgid "Stop Words"
|
1031 |
+
msgstr ""
|
1032 |
+
|
1033 |
+
#: includes/views/permalink-manager-tools.php:44
|
1034 |
msgid ""
|
1035 |
+
"<strong>A MySQL backup is highly recommended before using \"<em>Native "
|
1036 |
+
"slugs</em>\" mode!</strong>"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: includes/views/permalink-manager-tools.php:54
|
1040 |
+
msgid "List of duplicated permalinks"
|
|
|
1041 |
msgstr ""
|
1042 |
|
1043 |
+
#: includes/views/permalink-manager-tools.php:55
|
1044 |
+
msgid "Fix custom permalinks & redirects"
|
|
|
1045 |
msgstr ""
|
1046 |
|
1047 |
+
#: includes/views/permalink-manager-tools.php:70
|
1048 |
+
msgid "Extra Redirect"
|
|
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: includes/views/permalink-manager-tools.php:81
|
1052 |
+
msgid "Edit term"
|
|
|
1053 |
msgstr ""
|
1054 |
|
1055 |
+
#: includes/views/permalink-manager-tools.php:84
|
1056 |
+
msgid "(Removed term)"
|
|
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: includes/views/permalink-manager-tools.php:85
|
1060 |
+
#: includes/views/permalink-manager-tools.php:98
|
1061 |
+
msgid "Remove broken URI"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: includes/views/permalink-manager-tools.php:94
|
1065 |
+
msgid "Edit post"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: includes/views/permalink-manager-tools.php:97
|
1069 |
+
msgid "(Removed post)"
|
|
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: includes/views/permalink-manager-tools.php:120
|
1073 |
+
msgid "Congratulations! No duplicated URIs or Redirects found!"
|
|
|
1074 |
msgstr ""
|
1075 |
|
1076 |
+
#: includes/views/permalink-manager-tools.php:134
|
1077 |
+
msgid "Find ..."
|
|
|
1078 |
msgstr ""
|
1079 |
|
1080 |
+
#: includes/views/permalink-manager-tools.php:140
|
1081 |
+
msgid "Replace with ..."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: includes/views/permalink-manager-tools.php:146
|
1085 |
+
#: includes/views/permalink-manager-tools.php:222
|
1086 |
+
msgid "Mode"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: includes/views/permalink-manager-tools.php:150
|
1090 |
+
msgid "Custom URIs"
|
|
|
|
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: includes/views/permalink-manager-tools.php:151
|
1094 |
+
msgid "Native slugs"
|
1095 |
+
msgstr ""
|
1096 |
+
|
1097 |
+
#: includes/views/permalink-manager-tools.php:155
|
1098 |
+
#: includes/views/permalink-manager-tools.php:232
|
1099 |
+
msgid "Select content type"
|
1100 |
+
msgstr ""
|
1101 |
+
|
1102 |
+
#: includes/views/permalink-manager-tools.php:167
|
1103 |
+
#: includes/views/permalink-manager-tools.php:244
|
1104 |
+
msgid "Select post types"
|
1105 |
+
msgstr ""
|
1106 |
+
|
1107 |
+
#: includes/views/permalink-manager-tools.php:176
|
1108 |
+
#: includes/views/permalink-manager-tools.php:253
|
1109 |
+
msgid "Select taxonomies"
|
1110 |
+
msgstr ""
|
1111 |
+
|
1112 |
+
#: includes/views/permalink-manager-tools.php:187
|
1113 |
+
#: includes/views/permalink-manager-tools.php:264
|
1114 |
+
msgid "Select post statuses"
|
1115 |
+
msgstr ""
|
1116 |
+
|
1117 |
+
#: includes/views/permalink-manager-tools.php:196
|
1118 |
+
#: includes/views/permalink-manager-tools.php:273
|
1119 |
+
msgid "Select IDs"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: includes/views/permalink-manager-tools.php:200
|
1123 |
+
#: includes/views/permalink-manager-tools.php:277
|
1124 |
msgid ""
|
1125 |
+
"To narrow the above filters you can type the post IDs (or ranges) here. Eg. "
|
1126 |
+
"<strong>1-8, 10, 25</strong>."
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: includes/views/permalink-manager-tools.php:206
|
1130 |
+
#: includes/views/permalink-manager-tools.php:283
|
1131 |
+
msgid "Important notices"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: includes/views/permalink-manager-tools.php:209
|
1135 |
+
msgid "Find and replace"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: includes/views/permalink-manager-tools.php:226
|
1139 |
+
msgid "Regenerate custom permalinks"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: includes/views/permalink-manager-tools.php:227
|
1143 |
+
msgid "Regenerate native slugs"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: includes/views/permalink-manager-tools.php:228
|
1147 |
+
msgid "Use original URLs as custom permalinks"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: includes/views/permalink-manager-tools.php:286
|
1151 |
+
msgid "Regenerate"
|
1152 |
+
msgstr ""
|
1153 |
+
|
1154 |
+
#: includes/views/permalink-manager-debug.php:14
|
1155 |
+
msgid "Debug"
|
1156 |
+
msgstr ""
|
1157 |
+
|
1158 |
+
#: includes/views/permalink-manager-debug.php:26
|
1159 |
+
msgid "Debug data"
|
1160 |
+
msgstr ""
|
1161 |
+
|
1162 |
+
#: includes/views/permalink-manager-debug.php:30
|
1163 |
+
msgid "List of the URIs generated by this plugin."
|
1164 |
+
msgstr ""
|
1165 |
+
|
1166 |
+
#: includes/views/permalink-manager-debug.php:31
|
1167 |
+
msgid "Array with URIs"
|
1168 |
+
msgstr ""
|
1169 |
+
|
1170 |
+
#: includes/views/permalink-manager-debug.php:37
|
1171 |
+
msgid "List of custom redirects set-up by this plugin."
|
1172 |
+
msgstr ""
|
1173 |
+
|
1174 |
+
#: includes/views/permalink-manager-debug.php:38
|
1175 |
+
msgid "Array with redirects"
|
1176 |
+
msgstr ""
|
1177 |
+
|
1178 |
+
#: includes/views/permalink-manager-debug.php:44
|
1179 |
+
msgid "List of the permastructures."
|
1180 |
+
msgstr ""
|
1181 |
+
|
1182 |
+
#: includes/views/permalink-manager-debug.php:45
|
1183 |
+
msgid "Array with permastructures"
|
1184 |
+
msgstr ""
|
1185 |
+
|
1186 |
+
#: includes/views/permalink-manager-debug.php:51
|
1187 |
+
msgid "Currently used plugin settings."
|
1188 |
+
msgstr ""
|
1189 |
+
|
1190 |
+
#: includes/views/permalink-manager-debug.php:52
|
1191 |
+
msgid "Array with settings used in this plugin."
|
1192 |
msgstr ""
|
1193 |
|
1194 |
#. Name of the plugin
|
out/permalink-manager-admin.js
CHANGED
@@ -141,7 +141,13 @@ jQuery(document).ready(function() {
|
|
141 |
},
|
142 |
success: function(data) {
|
143 |
if(data.length > 5) {
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
// Loop through results
|
147 |
jQuery.each(results, function(key, is_duplicate) {
|
@@ -178,16 +184,16 @@ jQuery(document).ready(function() {
|
|
178 |
});
|
179 |
|
180 |
/**
|
181 |
-
* Check if
|
182 |
*/
|
183 |
-
if(jQuery('.custom_uri').length > 0) {
|
184 |
permalink_manager_duplicate_check(false, true);
|
185 |
}
|
186 |
|
187 |
/**
|
188 |
* Disable "Edit URI" input if URI should be updated automatically
|
189 |
*/
|
190 |
-
jQuery('
|
191 |
var selected = jQuery(this).find('option:selected');
|
192 |
var auto_update_status = jQuery(selected).data('auto-update');
|
193 |
|
@@ -239,32 +245,75 @@ jQuery(document).ready(function() {
|
|
239 |
*/
|
240 |
jQuery('#permalink-manager .save-row.hidden').removeClass('hidden');
|
241 |
jQuery('#permalink-manager').on('click', '#permalink-manager-save-button', function() {
|
242 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
var pm_fields = jQuery(pm_container).find("input, select");
|
244 |
var pm_data = jQuery(pm_fields).serialize() + '&action=' + 'pm_save_permalink';
|
245 |
-
var button = jQuery(this);
|
246 |
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
data: pm_data,
|
251 |
-
beforeSend: function() {
|
252 |
-
jQuery(pm_container).LoadingOverlay("show", {
|
253 |
-
background : "rgba(0, 0, 0, 0.1)",
|
254 |
-
});
|
255 |
-
},
|
256 |
-
success: function(html) {
|
257 |
-
jQuery(pm_container).find('.permalink-manager-gutenberg').replaceWith(html);
|
258 |
-
jQuery(pm_container).LoadingOverlay("hide");
|
259 |
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
|
266 |
-
|
267 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
|
269 |
/**
|
270 |
* Help tooltips
|
@@ -397,7 +446,12 @@ jQuery(document).ready(function() {
|
|
397 |
progress = updated_count = 0;
|
398 |
jQuery(form).attr("data-updated_count", 0);
|
399 |
}
|
400 |
-
}
|
|
|
|
|
|
|
|
|
|
|
401 |
});
|
402 |
|
403 |
return false;
|
141 |
},
|
142 |
success: function(data) {
|
143 |
if(data.length > 5) {
|
144 |
+
try {
|
145 |
+
var results = JSON.parse(data);
|
146 |
+
} catch (e) {
|
147 |
+
console.log(e);
|
148 |
+
console.log(data);
|
149 |
+
return;
|
150 |
+
}
|
151 |
|
152 |
// Loop through results
|
153 |
jQuery.each(results, function(key, is_duplicate) {
|
184 |
});
|
185 |
|
186 |
/**
|
187 |
+
* Check if any of displayed custom URIs is not duplicated
|
188 |
*/
|
189 |
+
if(jQuery('#uri_editor .custom_uri').length > 0) {
|
190 |
permalink_manager_duplicate_check(false, true);
|
191 |
}
|
192 |
|
193 |
/**
|
194 |
* Disable "Edit URI" input if URI should be updated automatically
|
195 |
*/
|
196 |
+
jQuery('#permalink-manager').on('change', 'select[name="auto_update_uri"]', function() {
|
197 |
var selected = jQuery(this).find('option:selected');
|
198 |
var auto_update_status = jQuery(selected).data('auto-update');
|
199 |
|
245 |
*/
|
246 |
jQuery('#permalink-manager .save-row.hidden').removeClass('hidden');
|
247 |
jQuery('#permalink-manager').on('click', '#permalink-manager-save-button', function() {
|
248 |
+
pm_reload_gutenberg_uri_editor();
|
249 |
+
return false;
|
250 |
+
});
|
251 |
+
|
252 |
+
var pm_reload_pending = false;
|
253 |
+
function pm_reload_gutenberg_uri_editor() {
|
254 |
+
var pm_container = jQuery('#permalink-manager.postbox');
|
255 |
var pm_fields = jQuery(pm_container).find("input, select");
|
256 |
var pm_data = jQuery(pm_fields).serialize() + '&action=' + 'pm_save_permalink';
|
|
|
257 |
|
258 |
+
// Do not duplicate AJAX requests
|
259 |
+
if(!pm_reload_pending) {
|
260 |
+
// console.log(pm_data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
|
262 |
+
jQuery.ajax({
|
263 |
+
type: 'POST',
|
264 |
+
url: permalink_manager.ajax_url,
|
265 |
+
data: pm_data,
|
266 |
+
beforeSend: function() {
|
267 |
+
pm_reload_pending = true;
|
268 |
+
|
269 |
+
jQuery(pm_container).LoadingOverlay("show", {
|
270 |
+
background : "rgba(0, 0, 0, 0.1)",
|
271 |
+
});
|
272 |
+
},
|
273 |
+
success: function(html) {
|
274 |
+
jQuery(pm_container).find('.permalink-manager-gutenberg').replaceWith(html);
|
275 |
+
jQuery(pm_container).LoadingOverlay("hide");
|
276 |
|
277 |
+
if(wp && wp.data !== 'undefined') {
|
278 |
+
wp.data.dispatch('core/editor').refreshPost();
|
279 |
+
}
|
280 |
+
|
281 |
+
pm_reload_pending = false;
|
282 |
+
}
|
283 |
+
});
|
284 |
+
}
|
285 |
+
}
|
286 |
+
|
287 |
+
/**
|
288 |
+
* Reload the URI Editor in Gutenberg after the post is published or the title/slug is changed
|
289 |
+
*/
|
290 |
+
try {
|
291 |
+
if(typeof wp !== 'undefined' && typeof wp.data !== 'undefined' && typeof wp.data.select !== 'undefined' && typeof wp.blocks !== 'undefined' && typeof wp.data.subscribe !== 'undefined') {
|
292 |
+
wp.data.subscribe(function () {
|
293 |
+
var isSavingPost = wp.data.select('core/editor').isSavingPost();
|
294 |
+
var isAutosavingPost = wp.data.select('core/editor').isAutosavingPost();
|
295 |
+
|
296 |
+
if(isSavingPost && !isAutosavingPost) {
|
297 |
+
old_status = wp.data.select('core/editor').getCurrentPostAttribute('status');
|
298 |
+
new_status = wp.data.select('core/editor').getEditedPostAttribute('status');
|
299 |
+
|
300 |
+
old_title = wp.data.select('core/editor').getCurrentPostAttribute('title');
|
301 |
+
new_title = wp.data.select('core/editor').getEditedPostAttribute('title');
|
302 |
+
|
303 |
+
old_slug = wp.data.select('core/editor').getCurrentPostAttribute('slug');
|
304 |
+
new_slug = wp.data.select('core/editor').getEditedPostAttribute('slug');
|
305 |
+
|
306 |
+
if((old_status !== new_status && new_status == 'publish') || (old_title !== new_title) || (old_slug !== new_slug)) {
|
307 |
+
setTimeout(function() {
|
308 |
+
pm_reload_gutenberg_uri_editor();
|
309 |
+
}, 1500);
|
310 |
+
}
|
311 |
+
}
|
312 |
+
})
|
313 |
+
};
|
314 |
+
} catch (e) {
|
315 |
+
console.log(e);
|
316 |
+
}
|
317 |
|
318 |
/**
|
319 |
* Help tooltips
|
446 |
progress = updated_count = 0;
|
447 |
jQuery(form).attr("data-updated_count", 0);
|
448 |
}
|
449 |
+
},
|
450 |
+
error: function(xhr, status, error_data) {
|
451 |
+
alert('Tthere was a problem running this tool and the process could not be completed. You can find more details in browser\'s console log.')
|
452 |
+
console.log('Status: ' + status);
|
453 |
+
console.log('Please send the debug data to contact@permalinkmanager.pro:\n\n' + xhr.responseText);
|
454 |
+
}
|
455 |
});
|
456 |
|
457 |
return false;
|
permalink-manager.php
CHANGED
@@ -4,13 +4,15 @@
|
|
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.
|
8 |
* Author: Maciej Bis
|
9 |
* Author URI: http://maciejbis.net/
|
10 |
* License: GPL-2.0+
|
11 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
12 |
* Text Domain: permalink-manager
|
13 |
* Domain Path: /languages
|
|
|
|
|
14 |
*/
|
15 |
|
16 |
// If this file is called directly or plugin is already defined, abort.
|
@@ -21,10 +23,10 @@ if (!defined('WPINC')) {
|
|
21 |
// Define the directories used to load plugin files.
|
22 |
define( 'PERMALINK_MANAGER_PLUGIN_NAME', 'Permalink Manager' );
|
23 |
define( 'PERMALINK_MANAGER_PLUGIN_SLUG', 'permalink-manager' );
|
24 |
-
define( 'PERMALINK_MANAGER_VERSION', '2.2.
|
25 |
define( 'PERMALINK_MANAGER_FILE', __FILE__ );
|
26 |
define( 'PERMALINK_MANAGER_DIR', untrailingslashit(dirname(__FILE__)) );
|
27 |
-
define( 'PERMALINK_MANAGER_BASENAME',
|
28 |
define( 'PERMALINK_MANAGER_URL', untrailingslashit( plugins_url('', __FILE__) ) );
|
29 |
define( 'PERMALINK_MANAGER_WEBSITE', 'http://permalinkmanager.pro?utm_source=plugin' );
|
30 |
define( 'PERMALINK_MANAGER_DONATE', 'https://www.paypal.me/Bismit' );
|
@@ -61,6 +63,7 @@ class Permalink_Manager_Class {
|
|
61 |
'third-parties' => 'Permalink_Manager_Third_Parties',
|
62 |
'core-functions' => 'Permalink_Manager_Core_Functions',
|
63 |
'gutenberg' => 'Permalink_Manager_Gutenberg',
|
|
|
64 |
'pro-functions' => 'Permalink_Manager_Pro_Functions'
|
65 |
),
|
66 |
'views' => array(
|
@@ -70,7 +73,6 @@ class Permalink_Manager_Class {
|
|
70 |
'settings' => 'Permalink_Manager_Settings',
|
71 |
'debug' => 'Permalink_Manager_Debug',
|
72 |
'pro-addons' => 'Permalink_Manager_Pro_Addons',
|
73 |
-
'upgrade' => 'Permalink_Manager_Upgrade',
|
74 |
'help' => 'Permalink_Manager_Help',
|
75 |
'uri-editor-tax' => false,
|
76 |
'uri-editor-post' => false
|
@@ -115,7 +117,7 @@ class Permalink_Manager_Class {
|
|
115 |
* Localize this plugin
|
116 |
*/
|
117 |
function localize_me() {
|
118 |
-
load_plugin_textdomain( 'permalink-manager', false,
|
119 |
}
|
120 |
|
121 |
/**
|
@@ -155,11 +157,12 @@ class Permalink_Manager_Class {
|
|
155 |
'general' => array(
|
156 |
'auto_update_uris' => 0,
|
157 |
'show_native_slug_field' => 0,
|
|
|
|
|
158 |
'canonical_redirect' => 1,
|
159 |
'setup_redirects' => 1,
|
160 |
'redirect' => '301',
|
161 |
'trailing_slashes' => 0,
|
162 |
-
'pagination_redirect' => 0,
|
163 |
'auto_remove_duplicates' => 1,
|
164 |
'fix_language_mismatch' => 1,
|
165 |
'pmxi_import_support' => 0,
|
@@ -168,6 +171,7 @@ class Permalink_Manager_Class {
|
|
168 |
'disable_slug_sanitization' => 0,
|
169 |
'partial_disable' => array(),
|
170 |
'deep_detect' => 1,
|
|
|
171 |
),
|
172 |
'licence' => array()
|
173 |
));
|
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.7.2
|
8 |
* Author: Maciej Bis
|
9 |
* Author URI: http://maciejbis.net/
|
10 |
* License: GPL-2.0+
|
11 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
12 |
* Text Domain: permalink-manager
|
13 |
* Domain Path: /languages
|
14 |
+
* WC requires at least: 3.0.0
|
15 |
+
* WC tested up to: 3.7.0
|
16 |
*/
|
17 |
|
18 |
// If this file is called directly or plugin is already defined, abort.
|
23 |
// Define the directories used to load plugin files.
|
24 |
define( 'PERMALINK_MANAGER_PLUGIN_NAME', 'Permalink Manager' );
|
25 |
define( 'PERMALINK_MANAGER_PLUGIN_SLUG', 'permalink-manager' );
|
26 |
+
define( 'PERMALINK_MANAGER_VERSION', '2.2.7.2' );
|
27 |
define( 'PERMALINK_MANAGER_FILE', __FILE__ );
|
28 |
define( 'PERMALINK_MANAGER_DIR', untrailingslashit(dirname(__FILE__)) );
|
29 |
+
define( 'PERMALINK_MANAGER_BASENAME', plugin_basename(__FILE__));
|
30 |
define( 'PERMALINK_MANAGER_URL', untrailingslashit( plugins_url('', __FILE__) ) );
|
31 |
define( 'PERMALINK_MANAGER_WEBSITE', 'http://permalinkmanager.pro?utm_source=plugin' );
|
32 |
define( 'PERMALINK_MANAGER_DONATE', 'https://www.paypal.me/Bismit' );
|
63 |
'third-parties' => 'Permalink_Manager_Third_Parties',
|
64 |
'core-functions' => 'Permalink_Manager_Core_Functions',
|
65 |
'gutenberg' => 'Permalink_Manager_Gutenberg',
|
66 |
+
'debug' => 'Permalink_Manager_Debug_Functions',
|
67 |
'pro-functions' => 'Permalink_Manager_Pro_Functions'
|
68 |
),
|
69 |
'views' => array(
|
73 |
'settings' => 'Permalink_Manager_Settings',
|
74 |
'debug' => 'Permalink_Manager_Debug',
|
75 |
'pro-addons' => 'Permalink_Manager_Pro_Addons',
|
|
|
76 |
'help' => 'Permalink_Manager_Help',
|
77 |
'uri-editor-tax' => false,
|
78 |
'uri-editor-post' => false
|
117 |
* Localize this plugin
|
118 |
*/
|
119 |
function localize_me() {
|
120 |
+
load_plugin_textdomain( 'permalink-manager', false, basename(dirname(__FILE__)) . "/languages" );
|
121 |
}
|
122 |
|
123 |
/**
|
157 |
'general' => array(
|
158 |
'auto_update_uris' => 0,
|
159 |
'show_native_slug_field' => 0,
|
160 |
+
'pagination_redirect' => 0,
|
161 |
+
'sslwww_redirect' => 0,
|
162 |
'canonical_redirect' => 1,
|
163 |
'setup_redirects' => 1,
|
164 |
'redirect' => '301',
|
165 |
'trailing_slashes' => 0,
|
|
|
166 |
'auto_remove_duplicates' => 1,
|
167 |
'fix_language_mismatch' => 1,
|
168 |
'pmxi_import_support' => 0,
|
171 |
'disable_slug_sanitization' => 0,
|
172 |
'partial_disable' => array(),
|
173 |
'deep_detect' => 1,
|
174 |
+
'edit_uris_cap' => 'publish_posts',
|
175 |
),
|
176 |
'licence' => array()
|
177 |
));
|