Ecwid Ecommerce Shopping Cart - Version 6.7

Version Description

  • May 8, 2019 =
  • Improved compatibility with WPML (part 2). WPML is a popular plugin for multilingual sites. Ecwid now supports full-featured multilingual storefronts, too. So, in this update, we added a few more improvements for WPML support. Now, if you have enabled the multilingual mode in your ecommerce store and are using WPML on your WordPress site, your shop pages will be displayed in the language selected by a visitor in a language selector. Read more about setting up a multilingual e-commerce store in Ecwid in the Ecwid blog: https://www.ecwid.com/blog/sell-around-the-globe-with-a-fully-multilingual-storefront.html
  • A few fixes for compatibility with Divi builder. If you use Divi builder to edit your WordPress site content, you might notice that the Ecwid buttons "Add store" and "Add product" didn't work well in the editor lately. We fixed that, now it should work fine.
Download this release

Release Info

Developer Ecwid
Plugin Icon 128x128 Ecwid Ecommerce Shopping Cart
Version 6.7
Comparing to
See all releases

Code changes from version 6.6 to 6.7

css/store-popup.css CHANGED
@@ -4,8 +4,8 @@
4
  display: inline-block;
5
  width: 16px;
6
  top: 3px;
7
- height: 16px;
8
- max-height: 16px;
9
  }
10
 
11
  .ecwid-store-icon svg * {
4
  display: inline-block;
5
  width: 16px;
6
  top: 3px;
7
+ height: 22px;
8
+ max-height: 22px;
9
  }
10
 
11
  .ecwid-store-icon svg * {
ecwid-shopping-cart.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.ecwid.com?source=wporg
5
  Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
6
  Text Domain: ecwid-shopping-cart
7
  Author: Ecwid Ecommerce
8
- Version: 6.6
9
  Author URI: https://ecwid.to/ecwid-site
10
  */
11
 
@@ -189,7 +189,8 @@ function ecwid_init_integrations()
189
  'js_composer/js_composer.php' => 'wpbakery-composer',
190
  'beaver-builder-lite-version/fl-builder.php' => 'beaver-builder',
191
  'bb-plugin/fl-builder.php' => 'beaver-builder',
192
- 'elementor/elementor.php' => 'elementor'
 
193
  );
194
 
195
 
@@ -742,7 +743,9 @@ function ecwid_check_version()
742
  add_option( 'ecwid_hide_prefetch', 'off' );
743
 
744
  // Since 6.1.x
745
- Ecwid_Floating_Minicart::create_default_options();
 
 
746
  add_option( 'ecwid_hide_old_minicart', ecwid_is_recent_installation() );
747
 
748
  Ecwid_Config::load_from_ini();
@@ -1589,6 +1592,8 @@ function ecwid_wrap_shortcode_content($content, $name, $attrs)
1589
  function ecwid_get_scriptjs_code( $force_lang = null ) {
1590
  static $code = '';
1591
 
 
 
1592
  $store_id = get_ecwid_store_id();
1593
  $params = ecwid_get_scriptjs_params( $force_lang );
1594
 
@@ -1596,7 +1601,7 @@ function ecwid_get_scriptjs_code( $force_lang = null ) {
1596
  $code .= ecwid_sso();
1597
  $code .= '<script type="text/javascript">if (jQuery && jQuery.mobile) { jQuery.mobile.hashListeningEnabled = false; jQuery.mobile.pushStateEnabled=false; }</script>';
1598
 
1599
- return $code;
1600
  }
1601
 
1602
  function ecwid_get_scriptjs_params( $force_lang = null ) {
5
  Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
6
  Text Domain: ecwid-shopping-cart
7
  Author: Ecwid Ecommerce
8
+ Version: 6.7
9
  Author URI: https://ecwid.to/ecwid-site
10
  */
11
 
189
  'js_composer/js_composer.php' => 'wpbakery-composer',
190
  'beaver-builder-lite-version/fl-builder.php' => 'beaver-builder',
191
  'bb-plugin/fl-builder.php' => 'beaver-builder',
192
+ 'elementor/elementor.php' => 'elementor',
193
+ 'sitepress-multilingual-cms/sitepress.php' => 'wpml'
194
  );
195
 
196
 
743
  add_option( 'ecwid_hide_prefetch', 'off' );
744
 
745
  // Since 6.1.x
746
+ if ( class_exists( 'Ecwid_Floating_Minicart' ) ) {
747
+ Ecwid_Floating_Minicart::create_default_options();
748
+ }
749
  add_option( 'ecwid_hide_old_minicart', ecwid_is_recent_installation() );
750
 
751
  Ecwid_Config::load_from_ini();
1592
  function ecwid_get_scriptjs_code( $force_lang = null ) {
1593
  static $code = '';
1594
 
1595
+ $force_lang = apply_filters( 'ecwid_lang', $force_lang );
1596
+
1597
  $store_id = get_ecwid_store_id();
1598
  $params = ecwid_get_scriptjs_params( $force_lang );
1599
 
1601
  $code .= ecwid_sso();
1602
  $code .= '<script type="text/javascript">if (jQuery && jQuery.mobile) { jQuery.mobile.hashListeningEnabled = false; jQuery.mobile.pushStateEnabled=false; }</script>';
1603
 
1604
+ return apply_filters( 'ecwid_scriptjs_code', $code );
1605
  }
1606
 
1607
  function ecwid_get_scriptjs_params( $force_lang = null ) {
includes/class-ecwid-floating-minicart.php CHANGED
@@ -71,7 +71,7 @@ if ( version_compare( get_bloginfo('version'), '4.0' ) >= 0 ) {
71
  ></div>
72
 
73
  <script>
74
- Ecwid.init();
75
  </script>
76
  HTML;
77
  }
71
  ></div>
72
 
73
  <script>
74
+ Ecwid.init();
75
  </script>
76
  HTML;
77
  }
includes/class-ecwid-product-popup.php CHANGED
@@ -106,9 +106,9 @@ class Ecwid_Product_Popup {
106
 
107
  $title = __( 'Add Product', 'ecwid-shopping-cart' );
108
  $button = <<<HTML
109
- <a href="#" id="insert-ecwid-product-button" class="button add-ecwid-product ecwid_button" title="$title">
110
  $title
111
- </a>
112
  HTML;
113
 
114
  return $context . $button;
106
 
107
  $title = __( 'Add Product', 'ecwid-shopping-cart' );
108
  $button = <<<HTML
109
+ <button id="insert-ecwid-product-button" class="button add-ecwid-product ecwid_button" title="$title">
110
  $title
111
+ </button>
112
  HTML;
113
 
114
  return $context . $button;
includes/class-ecwid-seo-links.php CHANGED
@@ -444,44 +444,16 @@ JS;
444
  }
445
 
446
  protected static function _get_relative_permalink( $item_id ) {
447
-
448
- $permalink = get_permalink( $item_id );
449
- $home_url = home_url();
450
- $default_link = substr( $permalink, strlen( $home_url ) );
451
-
452
- if ( !is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
453
- return $default_link;
454
- }
455
-
456
- try {
457
- global $sitepress;
458
-
459
- if ( $sitepress->get_setting( 'language_negotiation_type' ) == WPML_LANGUAGE_NEGOTIATION_TYPE_DIRECTORY ) {
460
-
461
- $translation_details = apply_filters( 'wpml_element_language_details', null, array(
462
- 'element_id' => $item_id,
463
- 'element_type' => 'post_page'
464
- ) );
465
-
466
- $code = $translation_details->language_code;
467
-
468
- $lang_info = apply_filters( 'wpml_active_languages', null );
469
- $permalink = apply_filters( 'wpml_permalink', get_permalink( $item_id ), $code, true );
470
- $home_url = $lang_info[$code]['url'];
471
-
472
- $link = substr( $permalink, strlen( $home_url ) );
473
- }
474
- } catch ( Exception $e ) {
475
- $permalink = get_permalink( $item_id );
476
 
477
- $home_url = home_url();
 
 
478
 
479
- $link = substr( $permalink, strlen( $home_url ) );
480
 
481
- return $default_link;
482
- }
483
-
484
- return $link;
485
  }
486
 
487
  public static function is_noindex_page() {
444
  }
445
 
446
  protected static function _get_relative_permalink( $item_id ) {
447
+ $permalink = parse_url( get_permalink( $item_id ) );
448
+ $home_url = parse_url( home_url() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
 
450
+ if( isset($home_url['query']) ) {
451
+ $home_url['path'] = substr( $home_url['path'], 0, -1 );
452
+ }
453
 
454
+ $default_link = substr( $permalink['path'], strlen( $home_url['path'] ) );
455
 
456
+ return apply_filters( 'ecwid_relative_permalink', $default_link, $item_id );
 
 
 
457
  }
458
 
459
  public static function is_noindex_page() {
includes/class-ecwid-static-home-page.php CHANGED
@@ -112,6 +112,7 @@ class Ecwid_Static_Home_Page {
112
  }
113
 
114
  $accept_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
 
115
 
116
  $cache_key = $accept_language . "\n" . $url;
117
 
112
  }
113
 
114
  $accept_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
115
+ $accept_language = apply_filters( 'ecwid_lang', $accept_language );
116
 
117
  $cache_key = $accept_language . "\n" . $url;
118
 
includes/class-ecwid-store-editor.php CHANGED
@@ -51,18 +51,18 @@ class Ecwid_Store_Editor {
51
 
52
  $title = __( 'Add Store', 'ecwid-shopping-cart' );
53
  $button = <<<HTML
54
- <a href="#" id="insert-ecwid-button" class="button add-ecwid ecwid_button" title="$title">
55
  <span class="ecwid-store-icon">$image_code</span>
56
  $title
57
- </a>
58
  HTML;
59
 
60
  $title = __( 'Edit Store', 'ecwid-shopping-cart' );
61
  $button .= <<<HTML
62
- <a href="#" id="update-ecwid-button" class="button update-ecwid ecwid_button" title="$title">
63
  <span class="ecwid-store-icon">$image_code</span>
64
  $title
65
- </a>
66
  HTML;
67
 
68
  return $context . $button;
51
 
52
  $title = __( 'Add Store', 'ecwid-shopping-cart' );
53
  $button = <<<HTML
54
+ <button id="insert-ecwid-button" class="button add-ecwid ecwid_button" title="$title">
55
  <span class="ecwid-store-icon">$image_code</span>
56
  $title
57
+ </button>
58
  HTML;
59
 
60
  $title = __( 'Edit Store', 'ecwid-shopping-cart' );
61
  $button .= <<<HTML
62
+ <button id="update-ecwid-button" class="button update-ecwid ecwid_button" title="$title">
63
  <span class="ecwid-store-icon">$image_code</span>
64
  $title
65
+ </button>
66
  HTML;
67
 
68
  return $context . $button;
includes/importer/class-ecwid-importer.php CHANGED
@@ -174,9 +174,9 @@ class Ecwid_Importer
174
  }
175
 
176
  public function append_after( $task, $index ) {
177
- array_splice( $this->_tasks, $index, 0, array( $task ) );
178
 
179
- return $index;
180
  }
181
 
182
  public function append_after_type( $task ) {
174
  }
175
 
176
  public function append_after( $task, $index ) {
177
+ array_splice( $this->_tasks, $index + 1, 0, array( $task ) );
178
 
179
+ return $index + 1;
180
  }
181
 
182
  public function append_after_type( $task ) {
includes/importer/task/class-ecwid-importer-task-create-product-variation.php CHANGED
@@ -33,10 +33,12 @@ class Ecwid_Importer_Task_Create_Product_Variation extends Ecwid_Importer_Task
33
 
34
  $value = $var['attributes']['attribute_' . strtolower($internal_name)];
35
 
36
- $variation_data['options'][] = array(
37
- 'name' => $name,
38
- 'value' => $value
39
- );
 
 
40
  }
41
 
42
  $variation_data['price'] = $var['display_price'];
33
 
34
  $value = $var['attributes']['attribute_' . strtolower($internal_name)];
35
 
36
+ if ( $value ) {
37
+ $variation_data['options'][] = array(
38
+ 'name' => $name,
39
+ 'value' => $value
40
+ );
41
+ }
42
  }
43
 
44
  $variation_data['price'] = $var['display_price'];
includes/importer/task/class-ecwid-importer-task-create-product.php CHANGED
@@ -104,8 +104,13 @@ class Ecwid_Importer_Task_Create_Product extends Ecwid_Importer_Task
104
  $result['options'] = array();
105
  foreach ( $attributes as $name => $attribute ) {
106
 
107
- $atts = $product->get_attributes();
108
- $tax_attribute = $atts[strtolower($name)]->get_taxonomy_object();
 
 
 
 
 
109
 
110
  if ($tax_attribute) {
111
  $name = $tax_attribute->attribute_label;
@@ -130,6 +135,20 @@ class Ecwid_Importer_Task_Create_Product extends Ecwid_Importer_Task
130
 
131
  return $result;
132
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
 
134
  public static function build( array $data ) {
135
  return array(
104
  $result['options'] = array();
105
  foreach ( $attributes as $name => $attribute ) {
106
 
107
+ $att = $this->_get_attribute_by_name( $product, $name );
108
+
109
+ if ( !$att ) {
110
+ continue;
111
+ }
112
+
113
+ $tax_attribute = $att->get_taxonomy_object();
114
 
115
  if ($tax_attribute) {
116
  $name = $tax_attribute->attribute_label;
135
 
136
  return $result;
137
  }
138
+
139
+ protected function _get_attribute_by_name( $product, $name ) {
140
+
141
+ $atts = $product->get_attributes();
142
+ $found = null;
143
+ foreach ( $atts as $att ) {
144
+ if ( $att['name'] == $name ) {
145
+ $found = $att;
146
+ break;
147
+ }
148
+ }
149
+
150
+ return $found;
151
+ }
152
 
153
  public static function build( array $data ) {
154
  return array(
includes/integrations/class-ecwid-integration-wpml.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Ecwid_Integration_WPML
4
+ {
5
+ public function __construct()
6
+ {
7
+ add_filter( 'ecwid_lang', array( $this, 'force_scriptjs_lang' ) );
8
+ add_filter( 'ecwid_relative_permalink', array( $this, 'mod_relative_permalink' ), 10, 2 );
9
+ }
10
+
11
+ public function force_scriptjs_lang( $lang )
12
+ {
13
+ $current_language_code = apply_filters( 'wpml_current_language', null );
14
+ return $current_language_code;
15
+ }
16
+
17
+ public function mod_relative_permalink( $default_link, $item_id )
18
+ {
19
+ global $sitepress;
20
+
21
+ if ( $sitepress->get_setting( 'language_negotiation_type' ) == WPML_LANGUAGE_NEGOTIATION_TYPE_DIRECTORY ) {
22
+
23
+ $translation_details = apply_filters( 'wpml_element_language_details', null, array(
24
+ 'element_id' => $item_id,
25
+ 'element_type' => 'post_page'
26
+ ) );
27
+
28
+ $code = $translation_details->language_code;
29
+
30
+ $lang_info = apply_filters( 'wpml_active_languages', null );
31
+ $permalink = apply_filters( 'wpml_permalink', get_permalink( $item_id ), $code, true );
32
+ $home_url = $lang_info[$code]['url'];
33
+
34
+ $default_link = substr( $permalink, strlen( $home_url ) );
35
+ }
36
+
37
+ return $default_link;
38
+ }
39
+ }
40
+
41
+ $ecwid_integration_wpml = new Ecwid_Integration_WPML();
includes/themes.php CHANGED
@@ -65,7 +65,6 @@ function ecwid_apply_theme($theme_name = null)
65
  'optimizer' => array( 'css' ),
66
  'businesso' => array( 'css' ),
67
  'flatsome' => array( Ecwid_Theme_Base::PROP_USE_JS_API_FOR_CATS_NAV_MENU ),
68
- 'Divi' => array( Ecwid_Theme_Base::PROP_USE_JS_API_FOR_CATS_NAV_MENU ),
69
  'themify-music' => array( Ecwid_Theme_Base::PROP_AJAX_DEFER_RENDERING ),
70
  'bridge' => array( Ecwid_Theme_Base::PROP_AJAX_DEFER_RENDERING ),
71
  'Parallax-One' => array( 'css' )
@@ -90,7 +89,8 @@ function ecwid_apply_theme($theme_name = null)
90
  'woodiex',
91
  'enfold',
92
  'vantage',
93
- 'zenlife'
 
94
  );
95
 
96
  $custom_themes = apply_filters( 'ecwid_custom_themes', $custom_themes );
65
  'optimizer' => array( 'css' ),
66
  'businesso' => array( 'css' ),
67
  'flatsome' => array( Ecwid_Theme_Base::PROP_USE_JS_API_FOR_CATS_NAV_MENU ),
 
68
  'themify-music' => array( Ecwid_Theme_Base::PROP_AJAX_DEFER_RENDERING ),
69
  'bridge' => array( Ecwid_Theme_Base::PROP_AJAX_DEFER_RENDERING ),
70
  'Parallax-One' => array( 'css' )
89
  'woodiex',
90
  'enfold',
91
  'vantage',
92
+ 'zenlife',
93
+ 'Divi'
94
  );
95
 
96
  $custom_themes = apply_filters( 'ecwid_custom_themes', $custom_themes );
includes/themes/class-ecwid-theme-divi.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once ECWID_THEMES_DIR . '/class-ecwid-theme-base.php';
4
+
5
+ class Ecwid_Divi extends Ecwid_Theme_Base
6
+ {
7
+ protected $name = 'Divi';
8
+
9
+ public function __construct() {
10
+ parent::__construct();
11
+
12
+ add_filter( Ecwid_Nav_Menus::FILTER_USE_JS_API_FOR_CATS_MENU, array( $this, 'filter_use_js_api_for_cats_menu' ) );
13
+
14
+ if( $this->is_wireframe_view() ) {
15
+ add_filter( 'ecwid_scriptjs_code', '__return_false' );
16
+ }
17
+
18
+ if( $this->is_visual_view() ) {
19
+ remove_all_filters( 'ecwid_inline_js_config' );
20
+ }
21
+
22
+ if( isset( $_REQUEST['page_id'] ) && $this->is_visual_view() ) {
23
+ add_action( 'wp_footer', array( $this, 'add_scriptjs_code' ) );
24
+ }
25
+ }
26
+
27
+ public function is_wireframe_view() {
28
+ return isset( $_REQUEST['et_bfb'] );
29
+ }
30
+
31
+ public function is_visual_view() {
32
+ return isset( $_REQUEST['et_fb'] ) && !isset( $_REQUEST['et_bfb'] );
33
+ }
34
+
35
+ public function add_scriptjs_code() {
36
+ echo ecwid_get_scriptjs_code();
37
+ }
38
+ }
39
+
40
+ return new Ecwid_Divi();
includes/widgets/nsf-minicart.tpl.php CHANGED
@@ -13,6 +13,6 @@ echo ecwid_get_product_browser_url_script();
13
  ></div>
14
 
15
  <script>
16
- Ecwid.init();
17
  </script>
18
  <!-- /noptimize -->
13
  ></div>
14
 
15
  <script>
16
+ Ecwid.init();
17
  </script>
18
  <!-- /noptimize -->
js/product-popup.js CHANGED
@@ -9,7 +9,7 @@ jQuery(document).ready(function() {
9
 
10
  popup().data( 'defaultSortBy', 'ADDED_TIME_DESC' );
11
 
12
- jQuery('#insert-ecwid-product-button').click(function() {
13
  openPopup();
14
  });
15
 
9
 
10
  popup().data( 'defaultSortBy', 'ADDED_TIME_DESC' );
11
 
12
+ jQuery(document).on('click', '#insert-ecwid-product-button', function() {
13
  openPopup();
14
  });
15
 
js/store-editor-page.js CHANGED
@@ -8,7 +8,8 @@ jQuery(document).ready(function() {
8
  /*
9
  * Media buttons handlers
10
  */
11
- jQuery('#update-ecwid-button,#insert-ecwid-button').click(ecwid_open_store_popup);
 
12
 
13
  /*
14
  * Close button handler
8
  /*
9
  * Media buttons handlers
10
  */
11
+ // jQuery('#update-ecwid-button,#insert-ecwid-button').click(ecwid_open_store_popup);
12
+ jQuery(document).on('click', '#update-ecwid-button,#insert-ecwid-button', ecwid_open_store_popup);
13
 
14
  /*
15
  * Close button handler
lib/ecwid_api_v3.php CHANGED
@@ -146,6 +146,10 @@ class Ecwid_Api_V3
146
 
147
  public function get_categories($input_params)
148
  {
 
 
 
 
149
  $params = array('token');
150
  if (array_key_exists('parent', $input_params)) {
151
  $params['parent'] = $input_params['parent'];
@@ -171,7 +175,7 @@ class Ecwid_Api_V3
171
  );
172
 
173
  $result = EcwidPlatform::get_from_categories_cache($url);
174
-
175
  if ( !$result ) {
176
  $result = EcwidPlatform::fetch_url( $url );
177
  }
@@ -508,6 +512,10 @@ class Ecwid_Api_V3
508
 
509
  public function get_store_profile() {
510
 
 
 
 
 
511
  $profile = EcwidPlatform::cache_get( self::PROFILE_CACHE_NAME );
512
 
513
  if ( $profile ) {
@@ -517,10 +525,10 @@ class Ecwid_Api_V3
517
  $params = array(
518
  'token' => self::get_token()
519
  );
520
-
521
  $url = $this->build_request_url($this->_profile_api_url, $params);
522
  $result = EcwidPlatform::fetch_url($url);
523
-
524
  if ( @$result['code'] == '403' ) {
525
  self::set_api_status( self::API_STATUS_ERROR_TOKEN );
526
  Ecwid_Api_V3::save_token('');
@@ -695,6 +703,11 @@ class Ecwid_Api_V3
695
  }
696
  }
697
 
 
 
 
 
 
698
  return $url . '?' . build_query($params);
699
  }
700
 
146
 
147
  public function get_categories($input_params)
148
  {
149
+ if( ecwid_is_demo_store() ) {
150
+ return false;
151
+ }
152
+
153
  $params = array('token');
154
  if (array_key_exists('parent', $input_params)) {
155
  $params['parent'] = $input_params['parent'];
175
  );
176
 
177
  $result = EcwidPlatform::get_from_categories_cache($url);
178
+
179
  if ( !$result ) {
180
  $result = EcwidPlatform::fetch_url( $url );
181
  }
512
 
513
  public function get_store_profile() {
514
 
515
+ if( ecwid_is_demo_store() ) {
516
+ return false;
517
+ }
518
+
519
  $profile = EcwidPlatform::cache_get( self::PROFILE_CACHE_NAME );
520
 
521
  if ( $profile ) {
525
  $params = array(
526
  'token' => self::get_token()
527
  );
528
+
529
  $url = $this->build_request_url($this->_profile_api_url, $params);
530
  $result = EcwidPlatform::fetch_url($url);
531
+
532
  if ( @$result['code'] == '403' ) {
533
  self::set_api_status( self::API_STATUS_ERROR_TOKEN );
534
  Ecwid_Api_V3::save_token('');
703
  }
704
  }
705
 
706
+ $lang = apply_filters( 'ecwid_lang', null );
707
+ if( !empty($lang) ) {
708
+ $params['lang'] = $lang;
709
+ }
710
+
711
  return $url . '?' . build_query($params);
712
  }
713
 
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: Ecwid
3
  Tags: ecommerce, e-commerce, storefront, online store, sell
4
  Requires at least: 3.7
5
- Tested up to: 5.1
6
- Stable tag: 6.6
7
 
8
  Powerful, easy to use ecommerce shopping cart. Sell on Facebook and Instagram. iPhone & Android apps. Superb support. Free plan available.
9
 
@@ -150,6 +150,10 @@ You can use Ecwid’s built-in import tools to copy your store products from any
150
  * [Ecwid eCommerce Forums](https://www.ecwid.com/forums/forumdisplay.php?f=19)
151
 
152
  == Changelog ==
 
 
 
 
153
  = 6.6 - Apr 29, 2019 =
154
  - **Improved loading time for the Ecwid plugin in WordPress admin backend**. We noticed that the Ecwid plugin affected the loading time of the pages editor in the WordPress admin backend. We improved a few things in the plugin to make it load faster.
155
  - **Improved compatibility with WPML**. WPML is a popular plugin for multilingual sites. We got a few reports that it didn’t work well with Ecwid. We talked to the WPML team and tracked down the issue. It’s now fixed and your site should work fine if you use both WPML and Ecwid. In future versions, we will add a full support for WPML — you will be able to translate your Ecwid catalog to multiple languages and display your store content in your visitor language.
2
  Contributors: Ecwid
3
  Tags: ecommerce, e-commerce, storefront, online store, sell
4
  Requires at least: 3.7
5
+ Tested up to: 5.2
6
+ Stable tag: 6.7
7
 
8
  Powerful, easy to use ecommerce shopping cart. Sell on Facebook and Instagram. iPhone & Android apps. Superb support. Free plan available.
9
 
150
  * [Ecwid eCommerce Forums](https://www.ecwid.com/forums/forumdisplay.php?f=19)
151
 
152
  == Changelog ==
153
+ = 6.7 - May 8, 2019 =
154
+ - **Improved compatibility with WPML (part 2)**. WPML is a popular plugin for multilingual sites. Ecwid now supports full-featured multilingual storefronts, too. So, in this update, we added a few more improvements for WPML support. Now, if you have enabled the multilingual mode in your ecommerce store and are using WPML on your WordPress site, your shop pages will be displayed in the language selected by a visitor in a language selector. Read more about setting up a multilingual e-commerce store in Ecwid in the Ecwid blog: [https://www.ecwid.com/blog/sell-around-the-globe-with-a-fully-multilingual-storefront.html](https://www.ecwid.com/blog/sell-around-the-globe-with-a-fully-multilingual-storefront.html)
155
+ - **A few fixes for compatibility with Divi builder**. If you use Divi builder to edit your WordPress site content, you might notice that the Ecwid buttons "Add store" and "Add product" didn't work well in the editor lately. We fixed that, now it should work fine.
156
+
157
  = 6.6 - Apr 29, 2019 =
158
  - **Improved loading time for the Ecwid plugin in WordPress admin backend**. We noticed that the Ecwid plugin affected the loading time of the pages editor in the WordPress admin backend. We improved a few things in the plugin to make it load faster.
159
  - **Improved compatibility with WPML**. WPML is a popular plugin for multilingual sites. We got a few reports that it didn’t work well with Ecwid. We talked to the WPML team and tracked down the issue. It’s now fixed and your site should work fine if you use both WPML and Ecwid. In future versions, we will add a full support for WPML — you will be able to translate your Ecwid catalog to multiple languages and display your store content in your visitor language.