Develop WooCommerce

The official WooCommerce development blog

Storefront 2.3.3 release notes — July 18, 2018

Storefront 2.3.3 release notes

Storefront 2.3.3 has been tagged for release and uploaded to

Here’s what’s changed pulled directly from the changelog:

* Tweak - Removed `user-scalable=no` from the viewport meta tag to allow for zooming on mobile browsers.
* Tweak - Allow for a flexible height on the site logo.
* Tweak - Only try to add title from `data-title` to responsive table columns that have this attribute set.
* Fix - Prevent select box from overflowing its wrapping container.
* Fix - Fixed handheld sub navigation dropdown toggle color. It now uses the same color set for the links.
* Fix - Fixed price label direction when in RTL.
* Fix - Removed related products static number of columns. It will now use the value from the wrapper `ul.products`.
* Fix - Removed font weight from default link styles for better compatibility with design plugins.
* Fix - Fixed H3 scopping in WooCommerce Brands integration.
* Fix - Fixed bundle layout issues in Composite Products integration.

Download the latest release of Storefront here or venture over to Dashboard → Updates to update your theme from WordPress.

As usual, if you spot any other issues, please log them in detail on Github.

WooCommerce Custom Product Tables Beta — July 17, 2018

WooCommerce Custom Product Tables Beta

Today, we’re pleased to announce the beta of our Custom Products Tables plugin that’s designed to improve the performance of WooCommerce stores by adding database tables that are designed for eCommerce.

This builds on the investment we made in 3.0 which introduced Data Stores and CRUD functionality that provides a uniform way of accessing a store’s data regardless of where it is saved.

Why products first? Simply because it’s one of the most complex Data Stores to change, and one which can positively impact stores of all sizes.

The plugin replaces the current WooCommerce product Data Store with one that makes use of brand new, normalised, dedicated product tables.

Performance Improvements

During our tests we set up two identical stores on the same hosting provider with the same theme and WooCommerce settings, the only difference being one was running the Custom Products Table Feature Plugin.

To test the new product tables we needed to easily create a lot of store data – specifically products, orders, and customers. To do that, we created the WooCommerce Smooth Generator – an easy to use development plugin which allows you to generate WooCommerce data to test the scalibilty of any of your development.

For the tests, we created one data set of 500 products and imported that into two identical stores with Storefront as the theme and no other plugins – one store with the normal WooCommerce data structures and the other with our new feature plugin.

Both stores also had 70,000 orders in the database and meta data in the range of 1.4 million rows.

Average Load times

The results, so far, have been great – with improvements of up to 30% on page load times! Checkout, arguably the most important part of the store experience, has seen the biggest performance gains.

Installing the plugin

To install the plugin you will need :

During the beta period we’ve limited access to the plugin’s functionality so that we can gather feedback from our developer community.

We do not recommend that you install and use this on a live store.

Data Migration

There are two WP-CLI commands available at present to migrate your data:
* wp wc-product-tables migrate-data [--clean-old-data] – This command will migrate data from the current WordPress tables to the new tables, passing the –clean-old-data flag will result in the old data being removed from the WordPress tables. Please be cautious when using this flag as it can result in you loosing your product data if not backed up and you need to revert.
* wp wc-product-tables recreate-tables – This command will drop all the new product tables, removing all data within them and then create new clean tables. This command is useful for testing the migration process from fresh again should you wish. Again, please be cautious as if you ran the migrate-data command with the –clean-old-data flag, running this will result in all your data being lost, so always keep a backup on hand of your products.

Do note that any new products created after you have enabled the plugin will be created in the new tables and will not be available if you disable the plugin again.

What tables are added

  • wc_products – Contains product data eliminating the majority of meta data table storage. A few fields in the meta data table not accessed often, and all extension specific data, will stay in meta data.
  • wc_product_attributes – Contains product attributes and their settings.
  • wc_product_attribute_values – Contains product attribute values and their settings.
  • wc_product_downloads – Contains product downloads and their settings.
  • wc_product_relationships – Contains all product relationships to other products or objects within the WooCommerce ecosystem, i.e. other products, images etc.
  • wc_product_variation_attribute_values – Contains variation data for products.

These tables currently cover all aspects of products, including product settings, attributes, variations, downloads, as well as other relationships such as up-sells, cross-sells, grouped products, and images.

Compatibility with extensions and themes

We’ve kept backwards compatibility in mind by adding specific functionality that checks meta data calls and then intervenes to ensure the data gets routed to and from the correct tables.

Whilst we have taken a care in ensuring developers that are not using CRUD can get/set data in the correct tables, we do advise developers with plugins and themes that make direct meta calls to avoid that and rather use the getter and setter methods provided by the Data Stores since version 3.0. We’ve published documentation here to help you move to the CRUD system.

Release Schedule

Our next milestone is to get this plugin released on so that any store can benefit from the performance improvements. To get there, we need your help putting the beta through its paces so we can catch all issues and better understand the performance improvements and problems you’re seeing in the wild.

Once you’ve installed the beta, please open an issue for any problems you encounter on the GitHub repository. And, let us know in the comments what performance improvements you’re seeing – we’d love to hear from you!

We plan to include the new product tables in a major version update early next year.

WooCommerce 3.4.3 fix release notes — June 20, 2018

WooCommerce 3.4.3 fix release notes

WooCommerce 3.4.3 is now available. ~59 commits made it into this release and the full changelog is below.

* Fix - Fix label for the price filter widget on RTL sites. #20417
* Fix - Checkout: stopPropagation when payment method selected so description tips show on radio buttons. #20432
* Fix - Shipping zone settings: fixed title for shipping methods without settings. #20441
* Fix - Ensure custom Webhook topic selections are correctly saved in admin. #20406
* Fix - Webhook bottom bulk actions. #20445
* Fix - Fixes multisite orders dashboard widget to use order number rather than ID. #20457
* Fix - Add check to ensure download log FK does not exist before adding it. Update routine will cleanup any duplicates. #20478
* Fix - IPv6 support with HTTP_X_FORWARDED_FOR header. #20479
* Fix - Avoid setting wrong prices when syncing grouped products with children. #20482
* Fix - Separation of explode and end functions in two lines. End function should get a reference as parameter. #20500
* Fix - Initialize payment gateways before running bulk actions so gateways can listen for events. #20502
* Fix - Cast shipping total to a float so incl. tax shows only when needed. #20531
* Fix - Fix automatic stock status updates based on stock level. #20573
* Fix - Improved sanitize_special_column_name_regex trim to fix column matching when importing CSVs. #20486
* Fix - Force importer log table to wrap long columns. #20534
* Fix - Rest API: Prevent errors if variation parent is invalid and cannot be read. #20572
* Fix - Rest API: Remove legacy API enabled check from auth endpoint. #20499
* Fix - Display products on sub-subcategories when sorting parent category by price. #20579
* Fix - Set order status to refunded when a PayPal transaction is refunded. #20574
* Fix - fix undefined index in abstract-wc-widget. #20544
* Fix - Round items for order total when recalculating order values to match cart. #20533
* Fix - Removed mysql transactions when updating order status, tweaked caching, and improved version transient cleanup to prevent possible deadlocks on checkout. #20537
* Tweak - Added a message to promote Wootenberg when running Gutenberg feature plugin. #20524
* Tweak - Added a warning notice before removing personal data from orders in bulk. #20481
* Dev - generate_select_html and generate_multiselect_html functions again support the usage of integer-keyed arrays as available values. #20569
* Dev - Allow order billing fields to use a provided 'value'. #20424

Download the latest release of WooCommerce here or venture over to Dashboard → Updates to update your plugins from WordPress.

As usual, if you spot any other issues in WooCommerce core please log them in detail on Github, and to disclose a security issue to our team, please submit a report via HackerOne here. Comments on this post are closed.

WooCommerce Gutenberg Products Block 1.1.0 release notes — June 6, 2018

WooCommerce Gutenberg Products Block 1.1.0 release notes

WooCommerce Gutenberg Products Block 1.1.0 is now available. This is the latest version of our feature plugin that adds a multi-purpose Products block to the Gutenberg editor. If you’re not familiar with the Products block feature plugin or the work we’ve been doing to get WooCommerce ready for Gutenberg here is an in-depth article all about it.

The full changelog is below.

* Feature - Add "Best Selling" and "Top Rated" product scopes.
* Fix - Only enqueue scripts and styles in the site backend.
* Fix - Remove focus checks deprecated in latest Gutenberg version.
* Fix - Added keys to some elements to prevent React warnings.
* Enhancement - Added custom API endpoint for more accurate block previews with orderby.
* Performance - Refactored the way the attribute select works to prevent many concurrent API requests on sites with many attributes.

Make sure you are updated to the latest version of Gutenberg then download the latest version here or venture over to Dashboard → Updates to update your plugins from WordPress.

If you spot any bugs or issues please log them in detail on Github.

WooCommerce 3.4.2 fix release notes — June 5, 2018

WooCommerce 3.4.2 fix release notes

WooCommerce 3.4.2 is now available. ~32 commits made it into this release and the full changelog is below.

* Fix - Flexslider gallery fixes for RTL sites, and for variation image switching. #20328 ##20321
* Fix - Allow forms to be submitted when the password strength library fails to load. #20362
* Fix - Personal data exporter: Do not export a customer data group containing no data. #20347
* Fix - Fix navigation notification in settings when clicking save. #20335
* Fix - Show discount amount for free shipping coupons. #20334
* Fix - Fixed cache clearing for category children for sites running object caching. #20308
* Fix - Use correct escaping on select2 placeholders. #20364
* Fix - Order by price clauses when searching within terms. #20391
* Fix - Clear needs_processing transient when adding a product to an order. #20390
* Enhancement - Permission_id constraint checks on install. #20366
* Dev - Added order to "woocommerce_order_is_vat_exempt" filter arguments. #20365
* Localization - Disable states for Bahrain. #20363
* Localization - Disable states for Luxemberg. #20389

Download the latest release of WooCommerce here or venture over to Dashboard → Updates to update your plugins from WordPress.

As usual, if you spot any other issues in WooCommerce core please log them in detail on Github, and to disclose a security issue to our team, please submit a report via HackerOne here. Comments on this post are closed.