Develop WooCommerce

The official WooCommerce development blog

WooCommerce 3.4 RC1 — May 9, 2018
WooCommerce 3.4 beta 2 — May 3, 2018

WooCommerce 3.4 beta 2

WooCommerce 3.4 beta 2 is now available. This beta release has a whole host of bug fixes and is ready for testing! To test WC 3.4 beta 2 you can use our beta tester plugin or download the release here.

Thanks for testing WooCommerce, and if you find any bugs please open an issue!

WooCommerce 3.4 Beta is here! — April 18, 2018

WooCommerce 3.4 Beta is here!

Today we’re pleased to announce that WooCommerce 3.4 is available for beta testing!

You can download it directly here or WooCommerce prerelease versions are also now available at WordPress.org.

Release highlights

3.4 is the second minor release this year. Being a minor release, all new functionality should exist in a backwards-compatible manner. Updating from any version since 3.0 should be hassle free!

Here is what to look out for in the update.

GDPR compliance

Enforcement of the EU General Data Protection Regulation (GDPR) begins shortly after the release of WooCommerce 3.4. We have added tools and features to help store owners become GDPR-compliant and deal with GDPR requests from customers.

Some of these features include:

  • Ability to add privacy policy text to checkout and account pages
  • Integration with the exporter coming in WordPress core (soon)
  • Tools to clean up (trash) and anonymize old orders which don’t need processing.
  • Tools to remove some optional fields from the checkout.

You can read more about how we’re tackling GDPR in WooCommerce core here, or read the readme for the full list.

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 the REST API. 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, here is our handy guide.

Beginning this release, the recommended PHP version for WooCommerce is 7.2.

 

Multisite dashboard widget

WooCommerce 3.4 introduces a new dashboard widget for multisite installs. This widget shows processing and on hold orders the user has access to from across the multisite network. This lets store owners and managers easily see orders that need action without having to manually go and check each site.

This should be a big time-saver for anyone that runs multiple WooCommerce stores using multisite!

Everything else . . .

Other features include:

  • 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 stopword support and the ability to search for multiple products in the same query.

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

Template file changes

  • 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.

Deprecated functions and methods

  • WC_Geo_IP has been deprecated since the legacy GeoLite database has been deprecated. See the begining of this article for more info.
  • 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.

Release schedule and testing

We’re hoping to keep WooCommerce 3.4 in beta for the next 5 weeks. If you’re a developer please check extensions and themes are compatible to be safe.

Release Candidate 1 should be tagged on May 9th and will remain in RC for a further 2 weeks until May 23rd which is our target launch date.

If you’d like to help us test, you can download the release from Github. We posted a nice little write-up on beta testing here which should get you started. Please read that and jump right in!

If you’d like to help translate 3.4, you’ll find it on the development branch on translate.wordpress.org.

Thanks to all of our testers and contributors!

WooCommerce 3.3 Beta is here! — December 12, 2017

WooCommerce 3.3 Beta is here!

Today we’re pleased to announce that WooCommerce 3.3 is available for beta testing!

You can download it here.

Release highlights

3.3 is a minor release and will be launching near the beginning of next year. There should be no breaking changes, new functionality should exist in a backwards-compatible manner, and updating from any release since 3.0 should be hassle free! Here is what to look out for in the update.

Better support for non-WooCommerce themes

WooCommerce doesn’t require a WooCommerce-compatible theme any more! You can now run WooCommerce with any theme and it should look great. Read more about this here.

Revamped Orders screen

We’ve made a lot of improvements to the Orders screen. The design has been overhauled and we’ve added the ability to quickly view and manage orders on the Orders screen. Read more about this here.

Image sizing improvements

You can now select the aspect ratio of images in your store. We’ve also automated thumbnail resizing and image regeneration. Read more about this here.

Stock management improvements

We’ve made stock management simpler and more intuitive. Read more about this here.

Download logging

Product downloads are now logged. You can view and analyze information about products that are downloaded from your store. Read more about this here.

Webhooks CRUD

We’ve applied the CRUD software design pattern used throughout WooCommerce to webhooks and migrated them to their own custom table. Read more about this here.

Everything else…

Other features include:

  • We’ve replaced all of the old dummy data and placeholders with new, fresh dummy data!
  • We’ve moved some settings into the Customizer so that you can preview changes while managing those settings.
  • If you’re using the database logger, we’ve added the ability to search in the logs.
  • You can now search for extensions right on the Extensions screen.

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!

Template file changes

When editing core template files we bump the version so themes know they need to update custom versions. The following files were updated in 3.3:

  • auth/form-login.php – Converted submit inputs to buttons.
  • cart/cart.php – Decoupled cart templating methods from WC_Cart class and converted submit inputs to buttons.
  • cart/mini-cart.php – Decoupled cart templating methods from WC_Cart class and converted submit inputs to buttons.
  • cart/shipping-calculator.php – Included city field by default.
  • checkout/form-coupon.php – Converted submit inputs to buttons.
  • checkout/form-pay.php – Converted submit inputs to buttons.
  • checkout/payment.php – Converted submit inputs to buttons.
  • checkout/review-order.php – Decoupled cart templating methods from WC_Cart class.
  • emails/customer-invoice.php – Improved default test for checkout page link.
  • global/form-login.php – Converted submit inputs to buttons.
  • global/quantity-input.php – Added aria-labelledby to quantity field.
  • global/wrapper-end.php – Made the Underscores theme wrappers the default.
  • global/wrapper-start.php – Made the Underscores theme wrappers the default.
  • loop/add-to-cart.php – Added add_to_cart_description method and aria-labels to cart buttons.
  • loop/loop-start.php – Use new loop functions.
  • loop/orderby.php – Refactored to work well on unsupported themes.
  • loop/pagination.php – Refactored a little to work well on unsupported themes.
  • loop/result-count.php – Refactored a little to work well on unsupported themes.
  • myaccount/form-add-payment-method.php – Improved wording and converted submit inputs to buttons.
  • myaccount/form-edit-address.php – Converted submit inputs to buttons.
  • myaccount/form-login.php – Converted submit inputs to buttons.
  • myaccount/form-lost-password.php – Converted submit inputs to buttons.
  • myaccount/payment-methods.php – Removed a message about new payment methods.
  • notices/error.php – Added role=alert for improved accessibility.
  • notices/success.php – Added role=alert for improved accessibility.
  • order/form-tracking.php – Converted submit inputs to buttons.
  • order/order-details-customer.php – Cleaned up and updated as part of Orders UI revamp.
  • order/order-details.php – New actions and a little refactoring.
  • order/order-downloads.php – Made the downloads table responsive.
  • single-product/add-to-cart/grouped.php – New hooks and added form action.
  • archive-product.php – Use new loop functions.
  • content-widget-product.php – Better action names.
  • product-searchform.php – Converted submit inputs to buttons.

Deprecated functions and methods

  • wc_get_core_supported_themes has been deprecated since core now supports all themes.
  • WC_Product_Download::set_previous_hash has been deprecated since core is no longer using filename-based hashing to keep track of files.
  • WC_Product_Download::get_previous_hash has been deprecated since core is no longer using filename-based hashing to keep track of files.
  • WC_Admin_Webhooks::logs_output has been deprecated since logging is no longer done on the Edit Webhook screen.
  • WC_Admin_Webhooks::get_logs_navigation has been deprecated since logging is no longer done on the Edit Webhook screen.
  • WC_Customer_Download_Data_Store::update_download_id has been deprecated because download_id is now a static UUID and should not be changed based on file hash.
  • WC_Cart::get_item_data has been deprecated in favor of wc_get_formatted_cart_item_data.
  • WC_Cart::get_remove_url has been deprecated in favor of wc_get_cart_remove_url.
  • WC_Cart::get_undo_url has been deprecated in favor of wc_get_cart_undo_url.
  • WC_Post_Data::process_product_file_download_paths has been deprecated because no action is necessary on changes to download paths since download_id is no longer based on file hash.
  • WC_Webhook::get_delivery_log has been deprecated since webhook logs are stored using the logger.

Release schedule and testing

We’re hoping to keep WooCommerce 3.3 in beta for the next 4 weeks. If you’re a developer please check extensions and themes are compatible to be safe.

Release Candidate 1 will be tagged on January 11th and will remain in RC for a further 3 weeks until January 30th which is our target launch date.

If you’d like to help us test, you can download the release from Github. We posted a nice little write-up on beta testing here which should get you started. Please read that and jump right in!

If you’d like to help translate 3.3, you’ll find it on the development branch on translate.wordpress.org.

Thanks to all of our testers and contributors!

WooCommerce 3.2 Beta is here! — August 30, 2017

WooCommerce 3.2 Beta is here!

Today we’re pleased to announce that WooCommerce 3.2 is available for beta testing! You can download it here.

Release highlights

3.2 is our second minor release this year. There should be no breaking changes, new functionality should exist in a backwards-compatible manner, and updating from 3.1 or 3.0 should be a hassle free! Here is what to look out for in the update.

New: Adding and removing coupons from orders

Up until now, coupons have been deeply coupled with the cart making reuse (and testing) extremely difficult. In 3.2 we’ve refactored the cart and coupon classes to improve this.

Due to these changes, we were able to implement a new admin feature – the ability to apply coupons (and remove coupons) from placed orders.

2017-08-23 13.52.08 2

This was a popular feature request on the ideas board. To use it, simply edit an order, click the “apply coupon” button and enter a coupon code. The rest will be done automatically.

You can read more about these changes here.

SelectWoo; better enhanced select boxes

screen-shot-2017-08-08-at-1-06-34-pm.png

In order to improve accessibility (particularly in screen readers) we’ve forked Select2 into a custom version called SelectWoo. This is used for things like state/country select boxes and extensively in the admin area.

We’ve also rolled SelectWoo out in 2 new areas; for the fields in the shipping calculator on the frontend, and for layered nav when using “or” type queries.

You can read more about SelectWoo here.

Pre-update extension version checks

WooCommerce 3.2 adds support for a new plugin header (text added to your plugins readme.txt) to determine which version of WooCommerce a plugin is tested up to. This header is named WC tested up to.

Before minor and major updates, WooCommerce will check these versions and display either an inline warning, or modal window warning (for major updates) to advise the user.

Screen Shot 2017-08-25 at 1.35.46 PM

You can read more about this feature, including instructions on what headers to add to plugins, here.

Subscription management improvements

In order to make it easier for customers who use a large number of extensions on their sites we have added some new filters to allow you to filter your WooCommerce.com extensions by installed/activated/download/update available etc. along with notification icons in the both then Extension menu item, as well as the ​​​My Subscriptions tab, making it easier for you to see when your WooCommerce.com extensions have updates available.

A new ‘share by’ label for shared subscriptions has also been included, which is part of a bigger project being worked on for the sharing of multi-site subscriptions bought on WooCommerce.com.

A dedicated products shortcode

We’ve unified the product shortcodes into one single, consolidated products shortcode which supports the options of all legacy product shortcodes. This replaces [product_category][featured_products][sale_products][best_selling_products][recent_products][product_attribute], and [top_rated_products].

You can read more about the new shortcode here.

Everything else…

Other features include:

  • Like the search helpers introduced in 3.1, we’ve done the same for products. You can see our usage wiki here.
  • We’ve simplified the ability to resend order details to customers by including one option to “resend”.
  • We’ve added store street address, city and postal code to settings for use by plugins. This is a minor change, but a feature nevertheless, and something important to extensions.
  • Wrapping values in quotes now let’s you use commas in the product CSV importer. This is an enhancement.
  • If a fatal error occurs, WooCommerce will catch and log it to be viewed in WC > Status > Logs. This can be useful in debugging.
  • We added drag and drop sorting on the grouped product field to control display order of products.
  • The product category filter on the products screen has been AJAXified for faster loading.
  • Added a new option to control the maximum depth of categories shown in the product category widget.
  • Allowed sorting options to be shown when viewing search results. This defaults to sorting by relevance.

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!

Template file changes

When editing core template files we bump the version so themes know they need to update custom versions. The following files were updated in 3.2:

  • mini-cart.php – Changes to support AJAX remove from cart buttons.
  • shipping-calculator.php – Fix to state field naming and support for select2.
  • order-receipt.php – New. Moved from template function.
  • downloads.php – New table of customer downloads.
  • thankyou.php – Download displays made consistent.
  • order-downloads.php – Download displays made consistent.
  • email-downloads.php – Download displays made consistent.
  • order-details-customer.php – Download displays made consistent.
  • email-order-details.php – Download displays made consistent.
  • email-order-items.php – Download displays made consistent.
  • email-addresses.php – Download displays made consistent.
  • order-details.php – Download displays made consistent.
  • my-account/orders.php – Action buttons moved to filter.
  • form-tracking.php – Improved error handling.
  • single-product-reviews.php – Fixed invalid markup.

Deprecated functions and methods

  • Accessing internal meta keys from a CRUD object will throw a usage notice in 3.2.0.
  • WC_Query::search_post_excerpt is no longer needed or used. WordPress handles excerpt searches.
  • WC_Query::remove_posts_where is no longer needed or used. WordPress handles excerpt searches.

Release schedule and testing

We’re hoping to keep WooCommerce 3.2 in beta for the next 3 weeks. If you’re a developer please check extensions and themes are compatible to be safe.

Release Candidate 1 will be tagged on September 20th and will remain in RC for a further 2 weeks until October 4th which is our target launch date.

If you’d like to help us test, you can download the release from Github. We posted a nice little write-up on beta testing here which should get you started. Please read that and jump right in!

If you’re like to help translate 3.2, you’ll find it on the development branch on translate.wordpress.org.

Thanks to all of our testers and contributors.