Today we’re excited to release WooCommerce 3.4 into the wild! 3.4 has been in development since January, and has had over 2140 commits from 80 contributors.

3.4 is a “minor” release; this version should be backwards compatible with sites running versions of WooCommerce greater than 3.0. We do of course recommend ensuring your extensions and themes are compatible before upgrading, and making backups for peace of mind–see this handy guide for more details.

GDPR features, tweaks, and settings

This release introduces several tools, tweaks, and settings to help with GDPR compliance:

  • User data export, erasure, and anonymization tools.
  • Settings for enabling automatic data cleanup or removal.
  • New Customizer settings for checkout fields and policy notices on the Checkout page.
  • Tweaks to logging to ensure personal data does not get logged.

These features tie into and require WordPress 4.9 to function.

To learn more about these features we recommend reading the detailed breakdown and explanation from our earlier post.

We have also published a series of posts on the main WooCommerce blog explaining how to get your site ready for GDPR which all store owners should read, and developers should pass on to their clients.

GeoLite2 integration

WooCommerce uses the MaxMind GeoLite database for geolocation during checkout to automatically select the customer’s correct country. The GeoLite database has been discontinued by MaxMind, and GeoLite2 is the replacement. This release adds support for and integrates WooCommerce with GeoLite2 to ensure geolocation will continue working correctly for the forseeable future. The whole process is automatic and no further action is needed on the store owner’s part to keep geolocation working correctly.

The library that integrates with GeoLite2 requires a minimum PHP version of 5.4. As a necessary step WooCommerce will not support geolocation using GeoLite2 on PHP versions less than 5.4.

On sites running those PHP versions geolocation will be done through other APIs. The API-based geolocation is a slower method, and it is recommended you update your PHP version if you are running a version less than 5.4.

If you need help upgrading your PHP version, we have a guide available.

Features for store owners

Features for store owners

Here’s some other new features you may find useful while using WooCommerce:

  • A multisite dashboard widget that shows order information from across all sites.
  • Wildcard email support for coupon restrictions. Using the wildcard character you can set up coupons restricted to groups of similar email addresses (.edu email accounts, corporate email accounts from a certain business, etc.).
  • Users can now set their display name on the My Account page.
  • Improvements to the admin product search, including the ability to search for multiple products in the same query.

Features for store builders and developers

Features for store builders and developers

If you’re building stores for clients, or just developing on top of WooCommerce, here’s some new toys at your disposal:

  • We’ve moved all photoswipe styles to their own CSS file to make them easy to dequeue if needed.
  • You can declare a custom data sanitization callback in the settings API.
  • We’ve added support for additional HTML5 input types for settings and checkout forms.
  • Lots of new filters and actions to increase the customizability of WooCommerce.

On top of the new features, there are a variety of minor tweaks, new hooks, and fixes in this minor release. We won’t go into detail here, but you can see the full list of changes in the readme if you’re interested!

Upgrading to 3.4

3.4 is a minor update and should be compatible with sites running any version of WooCommerce greater than or equal to 3.0. We still recommend testing and backing up prior to upgrading just to be safe.

Note: There are a few post-update database upgrade routines that need to run after updating. These may run for a while if you have a large amount of data in your database.

If you’re a developer and have somehow missed the beta and RC, the following information may be useful.

Deprecations in 3.4

  • WC_Geo_IP has been deprecated since the legacy GeoLite database has been deprecated. See the the top of this article for more info.
  • The Product Type column in the admin Products screen has been removed and released as a feature plugin. See this post for more info. If you’d like to keep the column, simply install the feature plugin and you’re set.
  • WC_Widget_Product_Tag_Cloud::_get_current_taxonomy has been deprecated for WC_Widget_Product_Tag_Cloud::get_current_taxonomy.
  • WC_Widget_Product_Tag_Cloud::_topic_count_text has been deprecated for WC_Widget_Product_Tag_Cloud::topic_count_text.

Template file changes in 3.4

- `auth/form-login.php` - Named nonces and used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `cart/cart.php` - Named nonces and added filter around backorder notification text.
- `cart/shipping-calculator.php` - Named nonces.
- `checkout/form-coupon.php` - Use `no-js` class to to hide forms/content that require JavaScript.
- `checkout/form-login.php` - Use `no-js` class to to hide forms/content that require JavaScript.
- `checkout/form-pay.php` - Named nonces.
- `checkout/payment.php` - Named nonces.
- `checkout/terms.php` - Make sure terms page exists and isn't trashed. Used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `emails/plain/email-customer-details.php` - Fixed converting letters with accents to uppercase.
- `emails/plain/email-downloads.php` - Make `woocommerce_email_downloads_column_` hook format aware.
- `emails/plain/email-addresses.php` - Fixed converting letters with accents to uppercase.
- `emails/plain/customer-reset-password.php` - Removed user login from reset password link.
- `emails/plain/email-order-details.php` - Fixed converting letters with accents to uppercase.
- `emails/customer-reset-password.php` - Removed user login from reset password link.
- `emails/email-downloads.php` - Make `woocommerce_email_downloads_column_` hook format aware.
- `global/form-login.php` - Used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `global/quantity-input.php` - Escape and strip tags to prevent broken HTML.
- `myaccount/form-add-payment-method.php` - Named nonces.
- `myaccount/form-edit-account.php` - Added autocomplete attributes. Used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `myaccount/form-edit-address.php` - Named nonces.
- `myaccount/form-login.php` - Added class and autocomplete attributes to form. Used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `myaccount/form-lost-password.php` - Named nonces and added autocomplete attributes.
- `myaccount/form-reset-password.php` - Named nonces and added autocomplete attributes. Used `nbsp;` to separate the `*` in required fields to prevent awkward line breaks.
- `order/form-tracking.php` - Named nonces.
- `single-product/add-to-cart/grouped.php` - Added `woocommerce_add_to_cart_form_action` filter and class to form.
- `single-product/add-to-cart/simple.php` - Added `woocommerce_add_to_cart_form_action` filter.
- `single-product/add-to-cart/variable.php` - Added `woocommerce_add_to_cart_form_action` filter and fixed variation URL bug when using special characters.
- `single-product/review-meta.php` - Add escaping to publish date to prevent broken HTML.
- `templates/archive-product.php` - Use `woocommerce_product_loop` instead of `have_posts`.

How we tested 3.4

3.4 beta was released on April 18th 2018 and remained in beta until the RC on May 9th 2018. During this time we tested internally, tested our own extensions and themes, tested popular premium themes, did some managed updates for actual customers on staging sites to pick up on any conflicts or bugs before the public release, and tested the update on WooCommerce.com.

If you spot any issues please let us know on GitHub. Thanks to everyone who helped test 3.4!

We ❤ Contributors

A massive thanks to everyone in the community who have contributed, be that via issue reports, fixestranslation, testing, supporting other users or simply spreading the word.

mikejolley claudiosanches claudiulodro rodrigoprimo kloon peterfabian
mikejolley claudiosanches claudiulodro rodrigoprimo kloon peterfabian
WPprodigy dechov shivapoudel rnaby bor0 alexmacarthur
WPprodigy dechov shivapoudel rnaby bor0 alexmacarthur
Chunkford belcherj michakrapp stevegrunwell helgatheviking saimonh3
Chunkford belcherj michakrapp stevegrunwell helgatheviking saimonh3
nishitlangaliya v18 javorszky pierrebuet jeffstieler tivnet
nishitlangaliya v18 javorszky pierrebuet jeffstieler tivnet
GlennMartin1 Chouby amritansh24 jb510 Drivingralle franticpsyx
GlennMartin1 Chouby amritansh24 jb510 Drivingralle franticpsyx
mksunlab garrett-eclipse jimjasson tiagonoronha corsonr wcjonathan
mksunlab garrett-eclipse jimjasson tiagonoronha corsonr wcjonathan
R33D3M33R digitalchild philipdowner techjewel haydenw linkhousemedia
R33D3M33R digitalchild philipdowner techjewel haydenw linkhousemedia
ericnicolaas shoheitanaka seostudio ahmedofali iamzozo alexminza
ericnicolaas shoheitanaka seostudio ahmedofali iamzozo alexminza
rynaldos michaeltieso torrelasley envelope mweimerskirch laurendavissmith
rynaldos michaeltieso torrelasley envelope mweimerskirch laurendavissmith
bekarice roylindauer mojo2405 norcross sofyansitorus danielshields
bekarice roylindauer mojo2405 norcross sofyansitorus danielshields
jconroy obiPlabon mysterioux emgk JeroenSormani aaronkirkham
jconroy obiPlabon mysterioux emgk JeroenSormani aaronkirkham
catearcher BrianHenryIE danielbitzer edwardkay iconicwp marcinbot
catearcher BrianHenryIE danielbitzer edwardkay iconicwp marcinbot
suifengtec tareq1988 hoangkianh jeffikus mtruitt pascalroget
suifengtec tareq1988 hoangkianh jeffikus mtruitt pascalroget
kouratoras willgorham
kouratoras willgorham