Version Description
- Removed wpml_referer_url as it is no longer used
- Fixed Fatal error on updating original, after setting attachments to "do not translate"
- Changed currency services rate rounding precision limit to 6 digits
- Fixed 404 error for translated attribute archive page
- Fixed prepending shop page before home page in breadcrumbs
Download this release
Release Info
Developer | sergey.r |
Plugin | WooCommerce Multilingual – run WooCommerce with WPML |
Version | 4.3.6 |
Comparing to | |
See all releases |
Code changes from version 4.3.5 to 4.3.6
- changelog/4.3.6.md +6 -0
- classes/class-wcml-admin-cookie.php +2 -1
- classes/multi-currency/class-wcml-exchange-rates.php +2 -1
- classes/multi-currency/exchange-rate-services/class-wcml-exchange-rates-currencylayer.php +1 -1
- classes/multi-currency/exchange-rate-services/class-wcml-exchange-rates-fixerio.php +1 -1
- classes/rest-api-support/class-wcml-rest-api-support-v1.php +1 -1
- classes/rest-api-support/class-wcml-rest-api-support.php +1 -1
- classes/taxonomy-translation/class-wcml-taxonomy-translation-link-filters.php +23 -5
- compatibility/class-wcml-bookings.php +2 -1
- inc/class-wcml-media.php +3 -1
- inc/class-wcml-orders.php +4 -2
- inc/class-wcml-url-translation.php +2 -2
- inc/class-wcml-wc-strings.php +16 -6
- inc/currencies/class-wcml-multi-currency-orders.php +2 -1
- inc/currencies/class-wcml-multi-currency-reports.php +2 -1
- inc/template-classes/class-wcml-st-taxonomy-ui.php +39 -0
- inc/wcml-switch-lang-request.php +1 -44
- readme.txt +8 -1
- templates/st-taxonomy-ui.twig +5 -0
- vendor/autoload.php +1 -1
- vendor/autoload_52.php +1 -1
- vendor/composer/autoload_classmap.php +1 -0
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_real_52.php +3 -3
- vendor/composer/autoload_static.php +6 -5
- wpml-woocommerce.php +3 -3
changelog/4.3.6.md
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Fixes
|
2 |
+
* [wcml-2529] Removed wpml_referer_url as it is no longer used
|
3 |
+
* [wcml-2527] Fixed Fatal error on updating original, after setting attachments to "do not translate"
|
4 |
+
* [wcml-2526] Changed currency services rate rounding precision limit to 6 digits
|
5 |
+
* [wcml-2525] Fixed 404 error for translated attribute archive page
|
6 |
+
* [wcml-2520] Fixed prepending shop page before home page in breadcrumbs
|
classes/class-wcml-admin-cookie.php
CHANGED
@@ -41,6 +41,7 @@ class WCML_Admin_Cookie{
|
|
41 |
* @param $name
|
42 |
*/
|
43 |
private function handle_cache_plugins() {
|
44 |
-
|
|
|
45 |
}
|
46 |
}
|
41 |
* @param $name
|
42 |
*/
|
43 |
private function handle_cache_plugins() {
|
44 |
+
// @todo uncomment or delete when #wpmlcore-5796 is resolved
|
45 |
+
//do_action( 'wpsc_add_cookie', $this->name );
|
46 |
}
|
47 |
}
|
classes/multi-currency/class-wcml-exchange-rates.php
CHANGED
@@ -15,6 +15,7 @@ class WCML_Exchange_Rates {
|
|
15 |
private $wp_locale;
|
16 |
|
17 |
const CRONJOB_EVENT = 'wcml_exchange_rates_update';
|
|
|
18 |
|
19 |
/**
|
20 |
* WCML_Exchange_Rates constructor.
|
@@ -160,7 +161,7 @@ class WCML_Exchange_Rates {
|
|
160 |
|
161 |
public function apply_lifting_charge( &$rates ) {
|
162 |
foreach ( $rates as $k => $rate ) {
|
163 |
-
$rates[ $k ] = round( $rate * ( 1 + $this->settings['lifting_charge'] / 100 ),
|
164 |
}
|
165 |
}
|
166 |
|
15 |
private $wp_locale;
|
16 |
|
17 |
const CRONJOB_EVENT = 'wcml_exchange_rates_update';
|
18 |
+
const DIGITS_AFTER_DECIMAL_POINT = 6;
|
19 |
|
20 |
/**
|
21 |
* WCML_Exchange_Rates constructor.
|
161 |
|
162 |
public function apply_lifting_charge( &$rates ) {
|
163 |
foreach ( $rates as $k => $rate ) {
|
164 |
+
$rates[ $k ] = round( $rate * ( 1 + $this->settings['lifting_charge'] / 100 ), self::DIGITS_AFTER_DECIMAL_POINT );
|
165 |
}
|
166 |
}
|
167 |
|
classes/multi-currency/exchange-rate-services/class-wcml-exchange-rates-currencylayer.php
CHANGED
@@ -60,7 +60,7 @@ class WCML_Exchange_Rates_Currencylayer extends WCML_Exchange_Rate_Service {
|
|
60 |
if ( isset( $json->quotes ) ) {
|
61 |
foreach ( $tos as $to ) {
|
62 |
if ( isset( $json->quotes->{$from . $to} ) ) {
|
63 |
-
$rates[ $to ] = round( $json->quotes->{$from . $to},
|
64 |
}
|
65 |
}
|
66 |
}
|
60 |
if ( isset( $json->quotes ) ) {
|
61 |
foreach ( $tos as $to ) {
|
62 |
if ( isset( $json->quotes->{$from . $to} ) ) {
|
63 |
+
$rates[ $to ] = round( $json->quotes->{$from . $to}, WCML_Exchange_Rates::DIGITS_AFTER_DECIMAL_POINT );
|
64 |
}
|
65 |
}
|
66 |
}
|
classes/multi-currency/exchange-rate-services/class-wcml-exchange-rates-fixerio.php
CHANGED
@@ -54,7 +54,7 @@ class WCML_Exchange_Rates_Fixerio extends WCML_Exchange_Rate_Service {
|
|
54 |
}
|
55 |
|
56 |
foreach ( $json->rates as $to => $rate ) {
|
57 |
-
$rates[ $to ] = round( $rate,
|
58 |
}
|
59 |
|
60 |
return $rates;
|
54 |
}
|
55 |
|
56 |
foreach ( $json->rates as $to => $rate ) {
|
57 |
+
$rates[ $to ] = round( $rate, WCML_Exchange_Rates::DIGITS_AFTER_DECIMAL_POINT );
|
58 |
}
|
59 |
|
60 |
return $rates;
|
classes/rest-api-support/class-wcml-rest-api-support-v1.php
CHANGED
@@ -204,7 +204,7 @@ class WCML_REST_API_Support_V1{
|
|
204 |
|
205 |
$data = $request->get_params();
|
206 |
|
207 |
-
if( isset( $data['lang'] )){
|
208 |
$active_languages = $this->sitepress->get_active_languages();
|
209 |
if( !isset( $active_languages[$data['lang']] ) ){
|
210 |
throw new WCML_REST_Invalid_Language_Exception( $data['lang'] );
|
204 |
|
205 |
$data = $request->get_params();
|
206 |
|
207 |
+
if( isset( $data['lang'] ) && 'POST' === $request->get_method() ){
|
208 |
$active_languages = $this->sitepress->get_active_languages();
|
209 |
if( !isset( $active_languages[$data['lang']] ) ){
|
210 |
throw new WCML_REST_Invalid_Language_Exception( $data['lang'] );
|
classes/rest-api-support/class-wcml-rest-api-support.php
CHANGED
@@ -205,7 +205,7 @@ class WCML_REST_API_Support{
|
|
205 |
|
206 |
$data = $request->get_params();
|
207 |
|
208 |
-
if( isset( $data['lang'] )){
|
209 |
$active_languages = $this->sitepress->get_active_languages();
|
210 |
if( !isset( $active_languages[$data['lang']] ) ){
|
211 |
throw new WCML_REST_Invalid_Language_Exception( $data['lang'] );
|
205 |
|
206 |
$data = $request->get_params();
|
207 |
|
208 |
+
if( isset( $data['lang'] ) && 'POST' === $request->get_method() ){
|
209 |
$active_languages = $this->sitepress->get_active_languages();
|
210 |
if( !isset( $active_languages[$data['lang']] ) ){
|
211 |
throw new WCML_REST_Invalid_Language_Exception( $data['lang'] );
|
classes/taxonomy-translation/class-wcml-taxonomy-translation-link-filters.php
CHANGED
@@ -13,6 +13,7 @@ class WCML_Taxonomy_Translation_Link_Filters{
|
|
13 |
|
14 |
public function add_filters(){
|
15 |
add_filter( 'wpml_notice_text', array( $this, 'override_translation_notice_text' ), 10, 2 );
|
|
|
16 |
}
|
17 |
|
18 |
/**
|
@@ -59,11 +60,7 @@ class WCML_Taxonomy_Translation_Link_Filters{
|
|
59 |
$args['tab'] = $taxonomy;
|
60 |
} else {
|
61 |
|
62 |
-
$
|
63 |
-
$translatable_attributes = array();
|
64 |
-
foreach ( $attributes as $attribute ) {
|
65 |
-
$translatable_attributes[] = 'pa_' . $attribute->attribute_name;
|
66 |
-
}
|
67 |
|
68 |
if ( in_array( $taxonomy, $translatable_attributes, true ) ) {
|
69 |
$args['tab'] = 'product-attributes';
|
@@ -91,4 +88,25 @@ class WCML_Taxonomy_Translation_Link_Filters{
|
|
91 |
|
92 |
return $url;
|
93 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
13 |
|
14 |
public function add_filters(){
|
15 |
add_filter( 'wpml_notice_text', array( $this, 'override_translation_notice_text' ), 10, 2 );
|
16 |
+
add_filter( 'wpml_taxonomy_slug_translation_ui', array( $this, 'slug_translation_ui_class' ), 10, 2 );
|
17 |
}
|
18 |
|
19 |
/**
|
60 |
$args['tab'] = $taxonomy;
|
61 |
} else {
|
62 |
|
63 |
+
$translatable_attributes = $this->get_translatable_attributes();
|
|
|
|
|
|
|
|
|
64 |
|
65 |
if ( in_array( $taxonomy, $translatable_attributes, true ) ) {
|
66 |
$args['tab'] = 'product-attributes';
|
88 |
|
89 |
return $url;
|
90 |
}
|
91 |
+
|
92 |
+
|
93 |
+
private function get_translatable_attributes(){
|
94 |
+
|
95 |
+
$translatable_attributes = array();
|
96 |
+
foreach ( $this->wcml_attributes->get_translatable_attributes() as $attribute ) {
|
97 |
+
$translatable_attributes[] = 'pa_' . $attribute->attribute_name;
|
98 |
+
}
|
99 |
+
|
100 |
+
return $translatable_attributes;
|
101 |
+
}
|
102 |
+
|
103 |
+
public function slug_translation_ui_class( $ui_class, $taxonomy ){
|
104 |
+
|
105 |
+
if( in_array( $taxonomy, $this->get_translatable_attributes() ) ){
|
106 |
+
|
107 |
+
$ui_class = new WCML_St_Taxonomy_UI( get_taxonomy( $taxonomy ) );
|
108 |
+
}
|
109 |
+
|
110 |
+
return $ui_class;
|
111 |
+
}
|
112 |
}
|
compatibility/class-wcml-bookings.php
CHANGED
@@ -1254,7 +1254,8 @@ class WCML_Bookings {
|
|
1254 |
}
|
1255 |
|
1256 |
if ( $currency_code ) {
|
1257 |
-
|
|
|
1258 |
setcookie( $cookie_name, $currency_code, time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
1259 |
}
|
1260 |
|
1254 |
}
|
1255 |
|
1256 |
if ( $currency_code ) {
|
1257 |
+
// @todo uncomment or delete when #wpmlcore-5796 is resolved
|
1258 |
+
//do_action( 'wpsc_add_cookie', $cookie_name );
|
1259 |
setcookie( $cookie_name, $currency_code, time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
1260 |
}
|
1261 |
|
inc/class-wcml-media.php
CHANGED
@@ -79,7 +79,9 @@ class WCML_Media{
|
|
79 |
if ( method_exists( 'WPML_Media_Attachments_Duplication', 'sync_post_thumbnail') ) {
|
80 |
$factory = new WPML_Media_Attachments_Duplication_Factory();
|
81 |
$media_duplicate = $factory->create();
|
82 |
-
|
|
|
|
|
83 |
}
|
84 |
}
|
85 |
|
79 |
if ( method_exists( 'WPML_Media_Attachments_Duplication', 'sync_post_thumbnail') ) {
|
80 |
$factory = new WPML_Media_Attachments_Duplication_Factory();
|
81 |
$media_duplicate = $factory->create();
|
82 |
+
if( $media_duplicate ){
|
83 |
+
$media_duplicate->sync_post_thumbnail( $orig_post_id );
|
84 |
+
}
|
85 |
}
|
86 |
}
|
87 |
|
inc/class-wcml-orders.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
3 |
|
4 |
private $woocommerce_wpml;
|
5 |
private $sitepress;
|
@@ -369,7 +370,8 @@ class WCML_Orders{
|
|
369 |
}
|
370 |
|
371 |
$cookie_name = '_wcml_dashboard_order_language';
|
372 |
-
|
|
|
373 |
setcookie( $cookie_name, filter_input( INPUT_POST, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ), time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
374 |
|
375 |
}
|
1 |
<?php
|
2 |
+
|
3 |
+
class WCML_Orders {
|
4 |
|
5 |
private $woocommerce_wpml;
|
6 |
private $sitepress;
|
370 |
}
|
371 |
|
372 |
$cookie_name = '_wcml_dashboard_order_language';
|
373 |
+
// @todo uncomment or delete when #wpmlcore-5796 is resolved
|
374 |
+
//do_action( 'wpsc_add_cookie', $cookie_name );
|
375 |
setcookie( $cookie_name, filter_input( INPUT_POST, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ), time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
376 |
|
377 |
}
|
inc/class-wcml-url-translation.php
CHANGED
@@ -515,8 +515,8 @@ class WCML_Url_Translation {
|
|
515 |
} elseif ( $attribute_slug_translation && $attribute_slug !== $attribute_slug_translation ) {
|
516 |
|
517 |
$slug_match = addslashes( ltrim( $attribute_slug, '/' ) );
|
518 |
-
$pattern =
|
519 |
-
$replacement = $attribute_slug_translation . '/$
|
520 |
|
521 |
$value = $this->replace_bases_in_rewrite_rules( $value, $pattern, $pattern, $replacement );
|
522 |
|
515 |
} elseif ( $attribute_slug_translation && $attribute_slug !== $attribute_slug_translation ) {
|
516 |
|
517 |
$slug_match = addslashes( ltrim( $attribute_slug, '/' ) );
|
518 |
+
$pattern = "#(^|\/)" . $slug_match . "/(.*)#";
|
519 |
+
$replacement = '$1'.$attribute_slug_translation . '/$2';
|
520 |
|
521 |
$value = $this->replace_bases_in_rewrite_rules( $value, $pattern, $pattern, $replacement );
|
522 |
|
inc/class-wcml-wc-strings.php
CHANGED
@@ -392,15 +392,25 @@ class WCML_WC_Strings {
|
|
392 |
if ( is_woocommerce() && $shop_page->ID && strstr( $trnsl_base['translated_base'], urldecode( $shop_page->post_name ) ) && get_option( 'page_on_front' ) != $shop_page->ID ) {
|
393 |
$breadcrumbs_buff = array();
|
394 |
$i = 0;
|
|
|
395 |
foreach ( $breadcrumbs as $key => $breadcrumb ) {
|
396 |
|
397 |
//Prepend the shop page to shop breadcrumbs
|
398 |
-
if ( $key === 0
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
}
|
405 |
|
406 |
if ( ! in_array( $breadcrumb, $breadcrumbs_buff ) ) {
|
392 |
if ( is_woocommerce() && $shop_page->ID && strstr( $trnsl_base['translated_base'], urldecode( $shop_page->post_name ) ) && get_option( 'page_on_front' ) != $shop_page->ID ) {
|
393 |
$breadcrumbs_buff = array();
|
394 |
$i = 0;
|
395 |
+
|
396 |
foreach ( $breadcrumbs as $key => $breadcrumb ) {
|
397 |
|
398 |
//Prepend the shop page to shop breadcrumbs
|
399 |
+
if ( $key === 0 ) {
|
400 |
+
|
401 |
+
if ( $breadcrumbs[1][1] != get_post_type_archive_link( 'product' ) ) {
|
402 |
+
|
403 |
+
if ( get_home_url() === $breadcrumbs[0][1] ) {
|
404 |
+
$breadcrumbs_buff[ $i ] = $breadcrumb;
|
405 |
+
$i ++;
|
406 |
+
}
|
407 |
+
|
408 |
+
$breadcrumbs_buff[ $i ] = array(
|
409 |
+
$shop_page->post_title,
|
410 |
+
get_post_type_archive_link( 'product' )
|
411 |
+
);
|
412 |
+
$i ++;
|
413 |
+
}
|
414 |
}
|
415 |
|
416 |
if ( ! in_array( $breadcrumb, $breadcrumbs_buff ) ) {
|
inc/currencies/class-wcml-multi-currency-orders.php
CHANGED
@@ -377,7 +377,8 @@ class WCML_Multi_Currency_Orders {
|
|
377 |
$currency = filter_input( INPUT_POST, 'currency', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
|
378 |
|
379 |
$cookie_name = '_wcml_order_currency';
|
380 |
-
|
|
|
381 |
setcookie( $cookie_name, $currency, time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
382 |
|
383 |
$return['currency'] = $currency;
|
377 |
$currency = filter_input( INPUT_POST, 'currency', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
|
378 |
|
379 |
$cookie_name = '_wcml_order_currency';
|
380 |
+
// @todo uncomment or delete when #wpmlcore-5796 is resolved
|
381 |
+
//do_action( 'wpsc_add_cookie', $cookie_name );
|
382 |
setcookie( $cookie_name, $currency, time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
383 |
|
384 |
$return['currency'] = $currency;
|
inc/currencies/class-wcml-multi-currency-reports.php
CHANGED
@@ -146,7 +146,8 @@ class WCML_Multi_Currency_Reports {
|
|
146 |
}
|
147 |
|
148 |
$cookie_name = '_wcml_reports_currency';
|
149 |
-
|
|
|
150 |
setcookie( $cookie_name, filter_input( INPUT_POST, 'currency', FILTER_SANITIZE_FULL_SPECIAL_CHARS ),
|
151 |
time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
152 |
|
146 |
}
|
147 |
|
148 |
$cookie_name = '_wcml_reports_currency';
|
149 |
+
// @todo uncomment or delete when #wpmlcore-5796 is resolved
|
150 |
+
//do_action( 'wpsc_add_cookie', $cookie_name );
|
151 |
setcookie( $cookie_name, filter_input( INPUT_POST, 'currency', FILTER_SANITIZE_FULL_SPECIAL_CHARS ),
|
152 |
time() + 86400, COOKIEPATH, COOKIE_DOMAIN );
|
153 |
|
inc/template-classes/class-wcml-st-taxonomy-ui.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class WCML_St_Taxonomy_UI extends WPML_Templates_Factory {
|
4 |
+
|
5 |
+
private $taxonomy_obj;
|
6 |
+
|
7 |
+
function __construct( $taxonomy_obj ){
|
8 |
+
parent::__construct();
|
9 |
+
|
10 |
+
$this->taxonomy_obj = $taxonomy_obj;
|
11 |
+
}
|
12 |
+
|
13 |
+
public function get_model(){
|
14 |
+
|
15 |
+
$model = array(
|
16 |
+
'link_url' => admin_url( 'admin.php?page=wpml-wcml&tab=slugs' ),
|
17 |
+
'link_label' => sprintf( __( 'Set different slugs in different languages for %s on WooCommerce Multilingual URLs translations page', 'woocommerce-multilingual' ), $this->taxonomy_obj->labels->name )
|
18 |
+
);
|
19 |
+
|
20 |
+
return $model;
|
21 |
+
|
22 |
+
}
|
23 |
+
|
24 |
+
public function render(){
|
25 |
+
|
26 |
+
return $this->show();
|
27 |
+
}
|
28 |
+
|
29 |
+
protected function init_template_base_dir() {
|
30 |
+
$this->template_paths = array(
|
31 |
+
WCML_PLUGIN_PATH . '/templates/',
|
32 |
+
);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function get_template() {
|
36 |
+
return 'st-taxonomy-ui.twig';
|
37 |
+
}
|
38 |
+
|
39 |
+
}
|
inc/wcml-switch-lang-request.php
CHANGED
@@ -36,19 +36,15 @@ class WCML_Switch_Lang_Request{
|
|
36 |
$lang_to = $this->get_requested_lang();
|
37 |
|
38 |
if ( $lang_from && $lang_from !== $lang_to ) {
|
39 |
-
$referer_url = $this->get_referer_url_cookie();
|
40 |
-
|
41 |
/**
|
42 |
* Hook fired when the user changes the site language
|
43 |
*
|
44 |
* @param string $lang_from the previous language
|
45 |
* @param string $lang_to the new language
|
46 |
-
* @param string $referer_url the previous URL
|
47 |
*/
|
48 |
-
do_action( 'wcml_user_switch_language', $lang_from, $lang_to
|
49 |
}
|
50 |
|
51 |
-
$this->set_referer_url_cookie();
|
52 |
}
|
53 |
|
54 |
}
|
@@ -72,27 +68,6 @@ class WCML_Switch_Lang_Request{
|
|
72 |
return '_icl_current_language';
|
73 |
}
|
74 |
|
75 |
-
/**
|
76 |
-
* @return string
|
77 |
-
*/
|
78 |
-
public function get_referer_url_cookie() {
|
79 |
-
return urldecode( $this->cookie->get_cookie( $this->get_referer_url_cookie_name() ) );
|
80 |
-
}
|
81 |
-
|
82 |
-
|
83 |
-
public function set_referer_url_cookie() {
|
84 |
-
if ( ! $this->cookie->headers_sent() ) {
|
85 |
-
|
86 |
-
$this->cookie->set_cookie(
|
87 |
-
$this->get_referer_url_cookie_name(),
|
88 |
-
$this->get_request_url(),
|
89 |
-
time() + DAY_IN_SECONDS,
|
90 |
-
defined( 'COOKIEPATH' ) ? COOKIEPATH : '/',
|
91 |
-
$this->get_cookie_domain()
|
92 |
-
);
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
/**
|
97 |
* @return bool|string
|
98 |
*/
|
@@ -101,17 +76,6 @@ class WCML_Switch_Lang_Request{
|
|
101 |
return defined( 'COOKIE_DOMAIN' ) ? COOKIE_DOMAIN : $this->get_server_host_name();
|
102 |
}
|
103 |
|
104 |
-
/**
|
105 |
-
* @return string
|
106 |
-
*/
|
107 |
-
public function get_request_url() {
|
108 |
-
$scheme = isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
|
109 |
-
$host = $this->get_server_host_name();
|
110 |
-
$uri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '';
|
111 |
-
|
112 |
-
return $scheme . '://' . $host . $uri;
|
113 |
-
}
|
114 |
-
|
115 |
/**
|
116 |
* Returns SERVER_NAME, or HTTP_HOST if the first is not available
|
117 |
*
|
@@ -129,13 +93,6 @@ class WCML_Switch_Lang_Request{
|
|
129 |
return preg_replace( '@:[443]+([/]?)@', '$1', $host );
|
130 |
}
|
131 |
|
132 |
-
/**
|
133 |
-
* @return string
|
134 |
-
*/
|
135 |
-
public function get_referer_url_cookie_name() {
|
136 |
-
return 'wpml_referer_url';
|
137 |
-
}
|
138 |
-
|
139 |
public function get_requested_lang() {
|
140 |
return $this->is_comments_post_page() ? $this->get_cookie_lang() : $this->get_request_uri_lang();
|
141 |
}
|
36 |
$lang_to = $this->get_requested_lang();
|
37 |
|
38 |
if ( $lang_from && $lang_from !== $lang_to ) {
|
|
|
|
|
39 |
/**
|
40 |
* Hook fired when the user changes the site language
|
41 |
*
|
42 |
* @param string $lang_from the previous language
|
43 |
* @param string $lang_to the new language
|
|
|
44 |
*/
|
45 |
+
do_action( 'wcml_user_switch_language', $lang_from, $lang_to );
|
46 |
}
|
47 |
|
|
|
48 |
}
|
49 |
|
50 |
}
|
68 |
return '_icl_current_language';
|
69 |
}
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
/**
|
72 |
* @return bool|string
|
73 |
*/
|
76 |
return defined( 'COOKIE_DOMAIN' ) ? COOKIE_DOMAIN : $this->get_server_host_name();
|
77 |
}
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
/**
|
80 |
* Returns SERVER_NAME, or HTTP_HOST if the first is not available
|
81 |
*
|
93 |
return preg_replace( '@:[443]+([/]?)@', '$1', $host );
|
94 |
}
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
public function get_requested_lang() {
|
97 |
return $this->is_comments_post_page() ? $this->get_cookie_lang() : $this->get_request_uri_lang();
|
98 |
}
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multili
|
|
5 |
License: GPLv2
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 4.9.8
|
8 |
-
Stable tag: 4.3.
|
9 |
|
10 |
Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
|
11 |
|
@@ -140,6 +140,13 @@ WooCommerce Multilingual is compatible with all major WooCommerce extensions. We
|
|
140 |
|
141 |
== Changelog ==
|
142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
= 4.3.5 =
|
144 |
* Fix rest translation in products creation
|
145 |
* Fixed incorrect translation matched for Table Rate Shipping title
|
5 |
License: GPLv2
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 4.9.8
|
8 |
+
Stable tag: 4.3.6
|
9 |
|
10 |
Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
|
11 |
|
140 |
|
141 |
== Changelog ==
|
142 |
|
143 |
+
= 4.3.6 =
|
144 |
+
* Removed wpml_referer_url as it is no longer used
|
145 |
+
* Fixed Fatal error on updating original, after setting attachments to "do not translate"
|
146 |
+
* Changed currency services rate rounding precision limit to 6 digits
|
147 |
+
* Fixed 404 error for translated attribute archive page
|
148 |
+
* Fixed prepending shop page before home page in breadcrumbs
|
149 |
+
|
150 |
= 4.3.5 =
|
151 |
* Fix rest translation in products creation
|
152 |
* Fixed incorrect translation matched for Table Rate Shipping title
|
templates/st-taxonomy-ui.twig
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p>
|
2 |
+
<a href="{{ link_url }}">
|
3 |
+
{{ link_label }}
|
4 |
+
</a>
|
5 |
+
</p>
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitbdf1c79204b9b418eec52b67b5a7b62b::getLoader();
|
vendor/autoload_52.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitdebe2f96cf929ce1551947d8d94f89e9::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -422,6 +422,7 @@ return array(
|
|
422 |
'WCML_Setup_Store_Pages_UI' => $baseDir . '/inc/template-classes/setup/class-wcml-setup-store-pages-ui.php',
|
423 |
'WCML_Setup_Translation_Options_UI' => $baseDir . '/inc/template-classes/setup/class-wcml-setup-translation-options-ui.php',
|
424 |
'WCML_Setup_UI' => $baseDir . '/classes/wcml-setup/class-wcml-setup-ui.php',
|
|
|
425 |
'WCML_Status_Config_Warnings_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-config-warnings-ui.php',
|
426 |
'WCML_Status_Media_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-media-ui.php',
|
427 |
'WCML_Status_Multi_Currencies_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-multi-currencies-ui.php',
|
422 |
'WCML_Setup_Store_Pages_UI' => $baseDir . '/inc/template-classes/setup/class-wcml-setup-store-pages-ui.php',
|
423 |
'WCML_Setup_Translation_Options_UI' => $baseDir . '/inc/template-classes/setup/class-wcml-setup-translation-options-ui.php',
|
424 |
'WCML_Setup_UI' => $baseDir . '/classes/wcml-setup/class-wcml-setup-ui.php',
|
425 |
+
'WCML_St_Taxonomy_UI' => $baseDir . '/inc/template-classes/class-wcml-st-taxonomy-ui.php',
|
426 |
'WCML_Status_Config_Warnings_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-config-warnings-ui.php',
|
427 |
'WCML_Status_Media_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-media-ui.php',
|
428 |
'WCML_Status_Multi_Currencies_UI' => $baseDir . '/inc/template-classes/status/class-wcml-status-multi-currencies-ui.php',
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit18f380b175f44489fa989a88f4b96581
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInitbdf1c79204b9b418eec52b67b5a7b62b
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitbdf1c79204b9b418eec52b67b5a7b62b', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitbdf1c79204b9b418eec52b67b5a7b62b', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
vendor/composer/autoload_real_52.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
-
class
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit480afeedc41ce5c618a5bb967ae90a4e {
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
+
class ComposerAutoloaderInitdebe2f96cf929ce1551947d8d94f89e9 {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitdebe2f96cf929ce1551947d8d94f89e9', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitdebe2f96cf929ce1551947d8d94f89e9', 'loadClassLoader'));
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'C' =>
|
@@ -454,6 +454,7 @@ class ComposerStaticInit18f380b175f44489fa989a88f4b96581
|
|
454 |
'WCML_Setup_Store_Pages_UI' => __DIR__ . '/../..' . '/inc/template-classes/setup/class-wcml-setup-store-pages-ui.php',
|
455 |
'WCML_Setup_Translation_Options_UI' => __DIR__ . '/../..' . '/inc/template-classes/setup/class-wcml-setup-translation-options-ui.php',
|
456 |
'WCML_Setup_UI' => __DIR__ . '/../..' . '/classes/wcml-setup/class-wcml-setup-ui.php',
|
|
|
457 |
'WCML_Status_Config_Warnings_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-config-warnings-ui.php',
|
458 |
'WCML_Status_Media_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-media-ui.php',
|
459 |
'WCML_Status_Multi_Currencies_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-multi-currencies-ui.php',
|
@@ -516,10 +517,10 @@ class ComposerStaticInit18f380b175f44489fa989a88f4b96581
|
|
516 |
public static function getInitializer(ClassLoader $loader)
|
517 |
{
|
518 |
return \Closure::bind(function () use ($loader) {
|
519 |
-
$loader->prefixLengthsPsr4 =
|
520 |
-
$loader->prefixDirsPsr4 =
|
521 |
-
$loader->prefixesPsr0 =
|
522 |
-
$loader->classMap =
|
523 |
|
524 |
}, null, ClassLoader::class);
|
525 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'C' =>
|
454 |
'WCML_Setup_Store_Pages_UI' => __DIR__ . '/../..' . '/inc/template-classes/setup/class-wcml-setup-store-pages-ui.php',
|
455 |
'WCML_Setup_Translation_Options_UI' => __DIR__ . '/../..' . '/inc/template-classes/setup/class-wcml-setup-translation-options-ui.php',
|
456 |
'WCML_Setup_UI' => __DIR__ . '/../..' . '/classes/wcml-setup/class-wcml-setup-ui.php',
|
457 |
+
'WCML_St_Taxonomy_UI' => __DIR__ . '/../..' . '/inc/template-classes/class-wcml-st-taxonomy-ui.php',
|
458 |
'WCML_Status_Config_Warnings_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-config-warnings-ui.php',
|
459 |
'WCML_Status_Media_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-media-ui.php',
|
460 |
'WCML_Status_Multi_Currencies_UI' => __DIR__ . '/../..' . '/inc/template-classes/status/class-wcml-status-multi-currencies-ui.php',
|
517 |
public static function getInitializer(ClassLoader $loader)
|
518 |
{
|
519 |
return \Closure::bind(function () use ($loader) {
|
520 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b::$prefixLengthsPsr4;
|
521 |
+
$loader->prefixDirsPsr4 = ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b::$prefixDirsPsr4;
|
522 |
+
$loader->prefixesPsr0 = ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b::$prefixesPsr0;
|
523 |
+
$loader->classMap = ComposerStaticInitbdf1c79204b9b418eec52b67b5a7b62b::$classMap;
|
524 |
|
525 |
}, null, ClassLoader::class);
|
526 |
}
|
wpml-woocommerce.php
CHANGED
@@ -8,16 +8,16 @@
|
|
8 |
Text Domain: woocommerce-multilingual
|
9 |
Requires at least: 3.9
|
10 |
Tested up to: 4.9.8
|
11 |
-
Version: 4.3.
|
12 |
WC requires at least: 2.1.0
|
13 |
-
WC tested up to: 3.4.
|
14 |
*/
|
15 |
|
16 |
if ( defined( 'WCML_VERSION' ) ) {
|
17 |
return;
|
18 |
}
|
19 |
|
20 |
-
define( 'WCML_VERSION', '4.3.
|
21 |
define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
|
22 |
define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
|
23 |
define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
|
8 |
Text Domain: woocommerce-multilingual
|
9 |
Requires at least: 3.9
|
10 |
Tested up to: 4.9.8
|
11 |
+
Version: 4.3.6
|
12 |
WC requires at least: 2.1.0
|
13 |
+
WC tested up to: 3.4.5
|
14 |
*/
|
15 |
|
16 |
if ( defined( 'WCML_VERSION' ) ) {
|
17 |
return;
|
18 |
}
|
19 |
|
20 |
+
define( 'WCML_VERSION', '4.3.6' );
|
21 |
define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
|
22 |
define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
|
23 |
define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
|