Polylang - Version 2.4.1

Version Description

(2018-11-27) =

  • Pro: Add compatibility with REST API changes made in WP 5.0
  • Pro: Fix sticky posts in the REST API
  • Pro: Fix overwritten custom post slug when the post is updated with the REST API
  • Pro: Fix bulk translate for media
  • Fix a conflict with Custom sidebars and Content aware sidebars
  • Fix a conflict with the theme Pokemania
  • Fix PHP notices when using the function 'icl_link_to_element' for terms
  • Fix title slugs for posts written in German
Download this release

Release Info

Developer Chouby
Plugin Icon 128x128 Polylang
Version 2.4.1
Comparing to
See all releases

Code changes from version 2.4 to 2.4.1

admin/admin-filters.php CHANGED
@@ -212,7 +212,7 @@ class PLL_Admin_Filters extends PLL_Filters {
212
  public function sanitize_title( $title, $raw_title, $context ) {
213
  static $once = false;
214
 
215
- if ( ! $once && 'save' == $context && ! empty( $this->curlang ) && ! empty( $title ) ) {
216
  $once = true;
217
  add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface
218
  $title = sanitize_title( $raw_title, '', $context );
@@ -235,7 +235,7 @@ class PLL_Admin_Filters extends PLL_Filters {
235
  public function sanitize_user( $username, $raw_username, $strict ) {
236
  static $once = false;
237
 
238
- if ( ! $once && ! empty( $this->curlang ) ) {
239
  $once = true;
240
  add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface
241
  $username = sanitize_user( $raw_username, '', $strict );
212
  public function sanitize_title( $title, $raw_title, $context ) {
213
  static $once = false;
214
 
215
+ if ( ! $once && 'save' == $context && ! empty( $title ) ) {
216
  $once = true;
217
  add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface
218
  $title = sanitize_title( $raw_title, '', $context );
235
  public function sanitize_user( $username, $raw_username, $strict ) {
236
  static $once = false;
237
 
238
+ if ( ! $once ) {
239
  $once = true;
240
  add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface
241
  $username = sanitize_user( $raw_username, '', $strict );
changelog.txt CHANGED
@@ -2,6 +2,131 @@
2
 
3
  This file contains only old changelog. See readme.txt for newer versions.
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  = 2.2.8 (2018-01-09) =
6
 
7
  * Pro: Fix: Impossible to link past events by translation in The Events Calendar
2
 
3
  This file contains only old changelog. See readme.txt for newer versions.
4
 
5
+ = 2.3.11 (2018-10-03) =
6
+
7
+ * Pro: Add action 'pll_created_sync_post'
8
+ * Pro: Fix language and translations not included for tags in the REST API
9
+ * Fix Assigning a parent category breaking the hierarchy of translated category
10
+
11
+ = 2.3.10 (2018-08-16) =
12
+
13
+ * Fix Lingotek notice not dismissable
14
+ * Fix fatal error with the widget calendar
15
+
16
+ = 2.3.9 (2018-08-14) =
17
+
18
+ * Add a notice to inform about Polylang for WooCommerce
19
+ * Deprecate PLL_Pointer
20
+ * Fix bulk editing pages with no language breaking hierarchy #281
21
+ * Fix an edge case where rewrite rules could be messed on a multisite
22
+ * MU Domain Mapping: fix secondary domain redirected to primary domain
23
+
24
+ = 2.3.8 (2018-07-16) =
25
+
26
+ * Pro: Duplicate term meta when duplicating a post creates new terms
27
+ * Pro: Add compatibility with ACF Pro when it's bundled with the theme
28
+ * Pro: Fix a fatal error when duplicating posts
29
+ * Set cookie during the home redirect
30
+ * Accept a port in the url to detect the site home
31
+ * Add filter 'pll_is_cache_active' to allow to load the cache compatibility #270 #274
32
+ * Fix potential fatal error when a 3rd party misuses the 'wpml_active_languages' filter #268
33
+ * Fix Uncaught TypeError: s.split is not a function. Props Wouter Van Vliet #262
34
+ * Fix text alignment for RTL scripts in Lingotek panel #247
35
+ * Fix html language attribute filter on admin
36
+ * Fix cookie expiration time when set in js. Props Jens Nachtigall #271
37
+ * Fix fatal error when a 3rd party misuses the WP_Query tax_query param. Props JanneAalto #252
38
+ * Fix an edge case which could mess home pages on a multisite
39
+
40
+
41
+ = 2.3.7 (2018-06-07) =
42
+
43
+ * Pro: The Events Calendar: Fix untranslated events shown in all languages
44
+ * Avoid displaying edit links of translations of the privacy policy page to non-admin
45
+ * Fix draft created when creating a new page on multisite
46
+ * Do not prevent using the cache for home when using WP Rocket 3.0.5 or later #236
47
+ * Fix language filter applied to wrong queries on admin side
48
+
49
+ = 2.3.6 (2018-05-17) =
50
+
51
+ * Pro: Fix post type archive slug not translated in ACF page link fields
52
+ * WP 4.9.6: Translate the privacy policy page
53
+ * WP 4.9.6: Add the translated user descriptions to exported personal data
54
+ * Update Plugin updater to version 1.6.16
55
+ * Fix conflict with the plugin View Admin As. Props Jory Hogeveen. #253
56
+
57
+ = 2.3.5 (2018-05-08) =
58
+
59
+ * Pro: Fix translated CPT slugs when one CPT name is a substring of another one. Props Steve Reimer.
60
+ * Pro: Fix canonical redirection for post types archives when the CPT slug is translated
61
+ * Pro: Fix ACF private key uselessly synchronized when the public custom field is not synchronized
62
+ * Add filter 'pll_filter_query_excluded_query_vars'
63
+ * Redirect www. to non www. when using multiple domains
64
+ * Fix Yoast SEO category sitemap not filtered by language when using multiple domains
65
+ * Fix PLL_COOKIE === false not honored when using a cache plugin. #248
66
+ * Fix empty predefined languages list
67
+
68
+ = 2.3.4 (2018-03-27) =
69
+
70
+ * Pro: Fix conflict with Pods related to translated slugs for custom post types
71
+ * Add Friulian to the predefined languages list
72
+ * Fix conflict (javascript error) with Gütenberg #225
73
+ * Fix conflict on ajax requests introduced by WooCoommerce 3.3.4
74
+ * Fix queries by 'category_name' not auto translated #238
75
+
76
+ = 2.3.3 (2018-03-15) =
77
+
78
+ * Pro: Fix tax query using a term sharing slugs (fix a conflict with Fusion Builder)
79
+ * Restore Polylang (free) on REST requests, while disabling the language filter as in v2.3
80
+ * Rework auto translated query with taxonomy in different language #223
81
+ * Synchronize Yoast SEO primary category (needs Yoast SEO 7.0+)
82
+ * Fix PHP warning introduced by Yoast SEO 7.0 #229
83
+ * Fix tax query when using the relation 'OR'
84
+ * Fix a conflict with the combination of Barrel + WP Bakery Page Builder
85
+ * Fix broken redirect with MU domain mapping #226
86
+ * Fix site title not translated in password change email
87
+
88
+ = 2.3.2 (2018-03-05) =
89
+
90
+ * Pro: Fix REST requests not filtered by the requested language (introduced in 2.3).
91
+ * Pro: Fix error 404 on single posts if posts are untranslatable
92
+ * Deactivate Polylang (free) on REST requests by default.
93
+ * Fix translated terms unassigned from posts when deleting a term
94
+ * Fix auto translated query with taxonomy in different language returning empty results since WP 4.9 #223
95
+ * Fix conflict with a homepage option of the theme Extra
96
+ * Fix warning when filtering get_pages()
97
+
98
+ = 2.3.1 (2018-02-15) =
99
+
100
+ * Pro: Fix GET REST request with slug parameter deleting the post slug
101
+ * Fix http request with a custom query var being redirected to the home page #216
102
+
103
+ = 2.3 (2018-01-30) =
104
+
105
+ * Pro: Duplicating a post now duplicates untranslated terms and the featured image (if media are translatable)
106
+ * Pro: Add filter 'pll_sync_post_fields'
107
+ * Pro: Translate ACF Pro clone fields when creating a new field group translation
108
+ * Pro: Allow to share slugs when creating a post or term with the REST API
109
+ * Pro: Load asynchronously the script added on front for multiple domains and subdomains
110
+ * Pro: Fix 'lang' parameter not interpreted when the query includes 'name'
111
+ * Refactor the synchronization of metas for better synchronization and performance improvement
112
+ * Refactor the synchronization of taxonomy terms for performance improvement
113
+ * Refactor language and translations saving for performance improvement
114
+ * Refactor the synchronization of sticky posts
115
+ * Remove all languages files. All translations are now maintained on https://translate.wordpress.org/projects/wp-plugins/polylang #199
116
+ * Refactor the list of languages to merge predefined languages, Facebook locales and fixes for W3C locales
117
+ * Automatically deactivate Polylang when activating Polylang Pro
118
+ * Disable programmatically translated post types and taxonomies in settings. Props Ulrich Pogson. #180
119
+ * Set the cookie language in Javascript when a cache plugin is active
120
+ * Automatically remove the home page from cache when requesting the detection of the browser preferred language
121
+ * Use relative urls for the admin language filter in admin bar. #209
122
+ * Disable auto translation of WP_Term_Query if it has a 'lang' parameter
123
+ * Don't filter REST requests by default. #211
124
+ * Fix Yoast SEO statistics in dashboard showing only the default language. #211
125
+ * Fix WP Rocket clearing the cache of the wrong adjacent post
126
+ * Fix random header image
127
+ * Fix home page not correctly loaded when adding a query var
128
+ * Fix: Impossible to change the language code when the language code is also a WordPress locale.
129
+
130
  = 2.2.8 (2018-01-09) =
131
 
132
  * Pro: Fix: Impossible to link past events by translation in The Events Calendar
frontend/frontend-filters.php CHANGED
@@ -82,7 +82,8 @@ class PLL_Frontend_Filters extends PLL_Filters {
82
  public function option_sticky_posts( $posts ) {
83
  global $wpdb;
84
 
85
- if ( $this->curlang && ! empty( $posts ) ) {
 
86
  $_posts = wp_cache_get( 'sticky_posts', 'options' ); // This option is usually cached in 'all_options' by WP
87
 
88
  if ( empty( $_posts ) || ! is_array( $_posts[ $this->curlang->term_taxonomy_id ] ) ) {
@@ -145,6 +146,7 @@ class PLL_Frontend_Filters extends PLL_Filters {
145
  * @return bool|array false if we hide the widget, unmodified $instance otherwise
146
  */
147
  public function widget_display_callback( $instance, $widget ) {
 
148
  return ! empty( $instance['pll_lang'] ) && $instance['pll_lang'] != $this->curlang->slug ? false : $instance;
149
  }
150
 
@@ -161,7 +163,12 @@ class PLL_Frontend_Filters extends PLL_Filters {
161
  public function sidebars_widgets( $sidebars_widgets ) {
162
  global $wp_registered_widgets;
163
 
164
- $_sidebars_widgets = $this->cache->get( 'sidebars_widgets' );
 
 
 
 
 
165
 
166
  if ( false !== $_sidebars_widgets ) {
167
  return $_sidebars_widgets;
@@ -189,7 +196,7 @@ class PLL_Frontend_Filters extends PLL_Filters {
189
  }
190
  }
191
 
192
- $this->cache->set( 'sidebars_widgets', $sidebars_widgets );
193
 
194
  return $sidebars_widgets;
195
  }
82
  public function option_sticky_posts( $posts ) {
83
  global $wpdb;
84
 
85
+ // Do not filter sticky posts on REST requests as $this->curlang is *not* the 'lang' parameter set in the request
86
+ if ( ! defined( 'REST_REQUEST' ) && $this->curlang && ! empty( $posts ) ) {
87
  $_posts = wp_cache_get( 'sticky_posts', 'options' ); // This option is usually cached in 'all_options' by WP
88
 
89
  if ( empty( $_posts ) || ! is_array( $_posts[ $this->curlang->term_taxonomy_id ] ) ) {
146
  * @return bool|array false if we hide the widget, unmodified $instance otherwise
147
  */
148
  public function widget_display_callback( $instance, $widget ) {
149
+ // FIXME it looks like this filter is useless, now the we use the filter sidebars_widgets
150
  return ! empty( $instance['pll_lang'] ) && $instance['pll_lang'] != $this->curlang->slug ? false : $instance;
151
  }
152
 
163
  public function sidebars_widgets( $sidebars_widgets ) {
164
  global $wp_registered_widgets;
165
 
166
+ if ( empty( $wp_registered_widgets ) ) {
167
+ return $sidebars_widgets;
168
+ }
169
+
170
+ $cache_key = md5( serialize( $sidebars_widgets ) );
171
+ $_sidebars_widgets = $this->cache->get( "sidebars_widgets_{$cache_key}" );
172
 
173
  if ( false !== $_sidebars_widgets ) {
174
  return $_sidebars_widgets;
196
  }
197
  }
198
 
199
+ $this->cache->set( "sidebars_widgets_{$cache_key}", $sidebars_widgets );
200
 
201
  return $sidebars_widgets;
202
  }
frontend/frontend.php CHANGED
@@ -51,6 +51,28 @@ class PLL_Frontend extends PLL_Base {
51
  }
52
  }
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  /**
55
  * Setups the language chooser based on options
56
  *
@@ -60,7 +82,7 @@ class PLL_Frontend extends PLL_Base {
60
  $this->links = new PLL_Frontend_Links( $this );
61
 
62
  // Don't set any language for REST requests when Polylang Pro is not active
63
- if ( ! class_exists( 'PLL_REST_Translated_Object' ) && 0 === strpos( str_replace( 'index.php', '', $_SERVER['REQUEST_URI'] ), '/' . rest_get_url_prefix() . '/' ) ) {
64
  /** This action is documented in include/class-polylang.php */
65
  do_action( 'pll_no_language_defined' );
66
  } else {
51
  }
52
  }
53
 
54
+ /**
55
+ * Is the current request a REST API request?
56
+ * Inspired by WP::parse_request()
57
+ * Needed because at this point, the constant REST_REQUEST is not defined yet
58
+ *
59
+ * @since 2.4.1
60
+ *
61
+ * @return bool
62
+ */
63
+ public function is_rest_request() {
64
+ $home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' );
65
+ $home_path_regex = sprintf( '|^%s|i', preg_quote( $home_path, '|' ) );
66
+
67
+ $req_uri = trim( $_SERVER['REQUEST_URI'], '/' );
68
+ $req_uri = preg_replace( $home_path_regex, '', $req_uri );
69
+ $req_uri = trim( $req_uri, '/' );
70
+ $req_uri = str_replace( 'index.php', '', $req_uri );
71
+ $req_uri = trim( $req_uri, '/' );
72
+
73
+ return 0 === strpos( $req_uri, rest_get_url_prefix() . '/' );
74
+ }
75
+
76
  /**
77
  * Setups the language chooser based on options
78
  *
82
  $this->links = new PLL_Frontend_Links( $this );
83
 
84
  // Don't set any language for REST requests when Polylang Pro is not active
85
+ if ( ! class_exists( 'PLL_REST_Translated_Object' ) && $this->is_rest_request() ) {
86
  /** This action is documented in include/class-polylang.php */
87
  do_action( 'pll_no_language_defined' );
88
  } else {
modules/wpml/wpml-legacy-api.php CHANGED
@@ -116,7 +116,7 @@ if ( ! function_exists( 'icl_link_to_element' ) ) {
116
  }
117
 
118
  $pll_type = ( 'post' == $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' == $type || pll_is_translated_taxonomy( $type ) ? 'term' : false );
119
- if ( $pll_type && ( $lang = pll_current_language() ) && ( $tr_id = PLL()->model->$pll_type->get_translation( $id, $lang ) ) && PLL()->links->current_user_can_read( $tr_id ) ) {
120
  $id = $tr_id;
121
  } elseif ( ! $return_original_if_missing ) {
122
  return '';
116
  }
117
 
118
  $pll_type = ( 'post' == $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' == $type || pll_is_translated_taxonomy( $type ) ? 'term' : false );
119
+ if ( $pll_type && ( $lang = pll_current_language() ) && ( $tr_id = PLL()->model->$pll_type->get_translation( $id, $lang ) ) && ( 'term' === $pll_type || PLL()->links->current_user_can_read( $tr_id ) ) ) {
120
  $id = $tr_id;
121
  } elseif ( ! $return_original_if_missing ) {
122
  return '';
polylang.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  Plugin Name: Polylang
5
  Plugin URI: https://polylang.pro
6
- Version: 2.4
7
  Author: Frédéric Demarle
8
  Author uri: https://polylang.pro
9
  Description: Adds multilingual capability to WordPress
@@ -53,7 +53,7 @@ if ( defined( 'POLYLANG_BASENAME' ) ) {
53
  }
54
  } else {
55
  // Go on loading the plugin
56
- define( 'POLYLANG_VERSION', '2.4' );
57
  define( 'PLL_MIN_WP_VERSION', '4.7' );
58
 
59
  define( 'POLYLANG_FILE', __FILE__ ); // this file
3
  /**
4
  Plugin Name: Polylang
5
  Plugin URI: https://polylang.pro
6
+ Version: 2.4.1
7
  Author: Frédéric Demarle
8
  Author uri: https://polylang.pro
9
  Description: Adds multilingual capability to WordPress
53
  }
54
  } else {
55
  // Go on loading the plugin
56
+ define( 'POLYLANG_VERSION', '2.4.1' );
57
  define( 'PLL_MIN_WP_VERSION', '4.7' );
58
 
59
  define( 'POLYLANG_FILE', __FILE__ ); // this file
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://polylang.pro
4
  Tags: multilingual, bilingual, translate, translation, language, multilanguage, international, localization
5
  Requires at least: 4.7
6
  Tested up to: 4.9
7
- Stable tag: 2.4
8
  License: GPLv2 or later
9
 
10
  Making WordPress multilingual
@@ -76,6 +76,17 @@ Don't hesitate to [give your feedback](http://wordpress.org/support/view/plugin-
76
 
77
  == Changelog ==
78
 
 
 
 
 
 
 
 
 
 
 
 
79
  = 2.4 (2018-11-12) =
80
 
81
  * Minimum WordPress version is now 4.7
@@ -87,7 +98,7 @@ Don't hesitate to [give your feedback](http://wordpress.org/support/view/plugin-
87
  * Pro: Fix term not duplicated correctly when the language is set from the content
88
  * Refactor the core to activate on front and for the REST api actions that were previously available only in the backend (language checks, synchronizations...).
89
  * Add flags to widgets displayed in only one language (Props Jory Hogeveen) #257
90
- * Honor 'pll_the_language_args' for all options in menus #237
91
  * Add better filters for default flags and custom flags
92
  * Custom flags can now be stored in the polylang directory in the theme
93
  * Custom flags can now use SVG
@@ -99,129 +110,4 @@ Don't hesitate to [give your feedback](http://wordpress.org/support/view/plugin-
99
  * Fix performance issue when using hundreds of widgets
100
  * Fix translations possibly wrong if the post language is changed without saving the post after
101
 
102
- = 2.3.11 (2018-10-03) =
103
-
104
- * Pro: Add action 'pll_created_sync_post'
105
- * Pro: Fix language and translations not included for tags in the REST API
106
- * Fix Assigning a parent category breaking the hierarchy of translated category
107
-
108
- = 2.3.10 (2018-08-16) =
109
-
110
- * Fix Lingotek notice not dismissable
111
- * Fix fatal error with the widget calendar
112
-
113
- = 2.3.9 (2018-08-14) =
114
-
115
- * Add a notice to inform about Polylang for WooCommerce
116
- * Deprecate PLL_Pointer
117
- * Fix bulk editing pages with no language breaking hierarchy #281
118
- * Fix an edge case where rewrite rules could be messed on a multisite
119
- * MU Domain Mapping: fix secondary domain redirected to primary domain
120
-
121
- = 2.3.8 (2018-07-16) =
122
-
123
- * Pro: Duplicate term meta when duplicating a post creates new terms
124
- * Pro: Add compatibility with ACF Pro when it's bundled with the theme
125
- * Pro: Fix a fatal error when duplicating posts
126
- * Set cookie during the home redirect
127
- * Accept a port in the url to detect the site home
128
- * Add filter 'pll_is_cache_active' to allow to load the cache compatibility #270 #274
129
- * Fix potential fatal error when a 3rd party misuses the 'wpml_active_languages' filter #268
130
- * Fix Uncaught TypeError: s.split is not a function. Props Wouter Van Vliet #262
131
- * Fix text alignment for RTL scripts in Lingotek panel #247
132
- * Fix html language attribute filter on admin
133
- * Fix cookie expiration time when set in js. Props Jens Nachtigall #271
134
- * Fix fatal error when a 3rd party misuses the WP_Query tax_query param. Props JanneAalto #252
135
- * Fix an edge case which could mess home pages on a multisite
136
-
137
-
138
- = 2.3.7 (2018-06-07) =
139
-
140
- * Pro: The Events Calendar: Fix untranslated events shown in all languages
141
- * Avoid displaying edit links of translations of the privacy policy page to non-admin
142
- * Fix draft created when creating a new page on multisite
143
- * Do not prevent using the cache for home when using WP Rocket 3.0.5 or later #236
144
- * Fix language filter applied to wrong queries on admin side
145
-
146
- = 2.3.6 (2018-05-17) =
147
-
148
- * Pro: Fix post type archive slug not translated in ACF page link fields
149
- * WP 4.9.6: Translate the privacy policy page
150
- * WP 4.9.6: Add the translated user descriptions to exported personal data
151
- * Update Plugin updater to version 1.6.16
152
- * Fix conflict with the plugin View Admin As. Props Jory Hogeveen. #253
153
-
154
- = 2.3.5 (2018-05-08) =
155
-
156
- * Pro: Fix translated CPT slugs when one CPT name is a substring of another one. Props Steve Reimer.
157
- * Pro: Fix canonical redirection for post types archives when the CPT slug is translated
158
- * Pro: Fix ACF private key uselessly synchronized when the public custom field is not synchronized
159
- * Add filter 'pll_filter_query_excluded_query_vars'
160
- * Redirect www. to non www. when using multiple domains
161
- * Fix Yoast SEO category sitemap not filtered by language when using multiple domains
162
- * Fix PLL_COOKIE === false not honored when using a cache plugin. #248
163
- * Fix empty predefined languages list
164
-
165
- = 2.3.4 (2018-03-27) =
166
-
167
- * Pro: Fix conflict with Pods related to translated slugs for custom post types
168
- * Add Friulian to the predefined languages list
169
- * Fix conflict (javascript error) with Gütenberg #225
170
- * Fix conflict on ajax requests introduced by WooCoommerce 3.3.4
171
- * Fix queries by 'category_name' not auto translated #238
172
-
173
- = 2.3.3 (2018-03-15) =
174
-
175
- * Pro: Fix tax query using a term sharing slugs (fix a conflict with Fusion Builder)
176
- * Restore Polylang (free) on REST requests, while disabling the language filter as in v2.3
177
- * Rework auto translated query with taxonomy in different language #223
178
- * Synchronize Yoast SEO primary category (needs Yoast SEO 7.0+)
179
- * Fix PHP warning introduced by Yoast SEO 7.0 #229
180
- * Fix tax query when using the relation 'OR'
181
- * Fix a conflict with the combination of Barrel + WP Bakery Page Builder
182
- * Fix broken redirect with MU domain mapping #226
183
- * Fix site title not translated in password change email
184
-
185
- = 2.3.2 (2018-03-05) =
186
-
187
- * Pro: Fix REST requests not filtered by the requested language (introduced in 2.3).
188
- * Pro: Fix error 404 on single posts if posts are untranslatable
189
- * Deactivate Polylang (free) on REST requests by default.
190
- * Fix translated terms unassigned from posts when deleting a term
191
- * Fix auto translated query with taxonomy in different language returning empty results since WP 4.9 #223
192
- * Fix conflict with a homepage option of the theme Extra
193
- * Fix warning when filtering get_pages()
194
-
195
- = 2.3.1 (2018-02-15) =
196
-
197
- * Pro: Fix GET REST request with slug parameter deleting the post slug
198
- * Fix http request with a custom query var being redirected to the home page #216
199
-
200
- = 2.3 (2018-01-30) =
201
-
202
- * Pro: Duplicating a post now duplicates untranslated terms and the featured image (if media are translatable)
203
- * Pro: Add filter 'pll_sync_post_fields'
204
- * Pro: Translate ACF Pro clone fields when creating a new field group translation
205
- * Pro: Allow to share slugs when creating a post or term with the REST API
206
- * Pro: Load asynchronously the script added on front for multiple domains and subdomains
207
- * Pro: Fix 'lang' parameter not interpreted when the query includes 'name'
208
- * Refactor the synchronization of metas for better synchronization and performance improvement
209
- * Refactor the synchronization of taxonomy terms for performance improvement
210
- * Refactor language and translations saving for performance improvement
211
- * Refactor the synchronization of sticky posts
212
- * Remove all languages files. All translations are now maintained on https://translate.wordpress.org/projects/wp-plugins/polylang #199
213
- * Refactor the list of languages to merge predefined languages, Facebook locales and fixes for W3C locales
214
- * Automatically deactivate Polylang when activating Polylang Pro
215
- * Disable programmatically translated post types and taxonomies in settings. Props Ulrich Pogson. #180
216
- * Set the cookie language in Javascript when a cache plugin is active
217
- * Automatically remove the home page from cache when requesting the detection of the browser preferred language
218
- * Use relative urls for the admin language filter in admin bar. #209
219
- * Disable auto translation of WP_Term_Query if it has a 'lang' parameter
220
- * Don't filter REST requests by default. #211
221
- * Fix Yoast SEO statistics in dashboard showing only the default language. #211
222
- * Fix WP Rocket clearing the cache of the wrong adjacent post
223
- * Fix random header image
224
- * Fix home page not correctly loaded when adding a query var
225
- * Fix: Impossible to change the language code when the language code is also a WordPress locale.
226
-
227
  See [changelog.txt](https://plugins.svn.wordpress.org/polylang/trunk/changelog.txt) for older changelog
4
  Tags: multilingual, bilingual, translate, translation, language, multilanguage, international, localization
5
  Requires at least: 4.7
6
  Tested up to: 4.9
7
+ Stable tag: 2.4.1
8
  License: GPLv2 or later
9
 
10
  Making WordPress multilingual
76
 
77
  == Changelog ==
78
 
79
+ = 2.4.1 (2018-11-27) =
80
+
81
+ * Pro: Add compatibility with REST API changes made in WP 5.0
82
+ * Pro: Fix sticky posts in the REST API
83
+ * Pro: Fix overwritten custom post slug when the post is updated with the REST API
84
+ * Pro: Fix bulk translate for media
85
+ * Fix a conflict with Custom sidebars and Content aware sidebars
86
+ * Fix a conflict with the theme Pokemania
87
+ * Fix PHP notices when using the function 'icl_link_to_element' for terms
88
+ * Fix title slugs for posts written in German
89
+
90
  = 2.4 (2018-11-12) =
91
 
92
  * Minimum WordPress version is now 4.7
98
  * Pro: Fix term not duplicated correctly when the language is set from the content
99
  * Refactor the core to activate on front and for the REST api actions that were previously available only in the backend (language checks, synchronizations...).
100
  * Add flags to widgets displayed in only one language (Props Jory Hogeveen) #257
101
+ * Honor the filter 'pll_the_language_args' for all options in menus #237
102
  * Add better filters for default flags and custom flags
103
  * Custom flags can now be stored in the polylang directory in the theme
104
  * Custom flags can now use SVG
110
  * Fix performance issue when using hundreds of widgets
111
  * Fix translations possibly wrong if the post language is changed without saving the post after
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  See [changelog.txt](https://plugins.svn.wordpress.org/polylang/trunk/changelog.txt) for older changelog