Changelog
Check out the latest releases from the WooCommerce project.
Subscribe to all release posts via our RSS feed.
-
The select2 library makes it simple for anyone to add full-featured, good-looking dropdown menus to their site. According to Wappalyzer, at least 850,000 websites are currently using select2. WooCommerce uses it in many places to enhance the look and usability of stores.
It is an excellent and popular library for making custom dropdown menus, but one of the biggest and longest-running problems with it has been its lack of accessibility. The fancy dropdowns generated by select2 simply do not work well with screen-reading software. The WooCommerce team has a strong commitment to backwards compatibility and to making the web accessible, but the select2 library has been unmaintained since the beginning of the year. For these reasons, we have forked the select2 library and improved its accessibility in a new release we’re calling selectWoo.
selectWoo is a backwards-compatible, drop-in replacement for select2 with improved accessibility.
Getting Started
To get a copy of selectWoo, you can download the beta release here. The selectWoo JavaScript and CSS files are in the “dist” subfolder. There are two versions of each file: one called “select2” and one called “selectWoo”. Both files are the exact same, so you can use either depending on your preference.
You can use selectWoo the exact same way that you would use select2. Everything works the same; it’s just more accessible.
Converting existing select2 applications to selectWoo
If you are already using select2, all you have to do is replace the select2.js file you are currently using with the new select2.js file from selectWoo and you should be good to go. All code is backwards-compatible and everything should function the same.
selectWoo can also run in parallel with other versions of select2. This solves a common problem in WordPress where two plugins will be using different versions of select2, so one plugin breaks. If you want to take advantage of this safeguard you will have to initialize elements with
$('...').selectWoo()
instead of$('...').select2()
. If you don’t need this feature, you can initialize dropdowns using either of the methods.If you are using a custom CSS stylesheet for styling select2 elements, you may need to update CSS selectors that style ‘aria-selected’ elements to style ‘data-selected’ elements instead. This is due to a design flaw that had to be corrected from the original select2 library where ‘aria-selected’ attributes were not being used properly.
Call for accessibility testing
selectWoo has improved accessibility, but it is not perfect in every screen reader yet. We need your help ensuring selectWoo works great for all users.
There are two ways you can help us test selectWoo so that we can make it accessible for everyone.
- Go to this test page. Try out the different example pages using a screen reader and verify they work correctly in your screen-reading software.
-
Download the WooCommerce master branch and verify dropdowns are accessible in WooCommerce. WooCommerce 3.2 has not been released yet, so do not do this on a production site. Do this on a local or staging site. selectWoo is used on the checkout page when selecting your country and state. It is also used in the WooCommerce settings pages for all of the dropdown settings.
Found an issue?
Please post any issues you find as a comment in this GitHub issue. Please include where you noticed accessibility problems, the screen-reading software you used, your operating system, and your browser.
-
The WooCommerce 3.1.1 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~50 commits made it into this fix release. The full changelog is below.
* Fix - Product importer: fixed handling of non UTF8 characters in descriptions.
* Fix - Product importer: Allow times in date fields.
* Fix - Product exporter: fixed meta data checkbox option.
* Fix - Helper: Styling and connect button in non-english languages.
* Fix - Tweak terms and conditions template to check for disallowed shortcodes.
* Fix - Fixed order helper queries when before_date and after_date args are both, corrected use of "paged", and corrected use of filters.
* Fix - Gallery; Trigger resize after main image loads to ensure correct gallery size.
* Fix - Prevent extra slashes being added to meta values when using the CRUD.
* Fix - Appends "where" clauses in the comment feed to prevent a notice.
* Fix - Fixed structured data output for variable product prices.
* Fix - 3.x issue: Changed state validation logic to work for MX states.
* Fix - 3.x issue: 7day reports should start from midnight, not the current time.
* Fix - 3.x issue: Status changes made by admin should be marked as a manual in the order notes.
* Fix - 3.x issue: Allow unsetting product shipping class in REST API.
* Fix - 3.x issue: Corrected error handling in zones shippingMethodView.
* Tweak - Avoid CloudFlare email obfuscation in admin.
* Tweak - Improved detection of DOING_AUTOSAVE in admin meta box code.
* Tweak - Improved my-account redirects and fallbacks.
* Tweak - Addcart_subtotal
to the shipping package so prices are recalculated when needed.
* Dev - Add search_customers() filter in customer data store.
* Dev - Product exporter: woocommerce_product_export_skip_meta_keys filter to control what gets exported.
* Dev - Pass correct value to woocommerce_shipping_classes_save_class when inserting a new term
If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
Today we’re excited to release WooCommerce 3.1 into the wild! 3.1 has been in development since April, and has had over 1600 commits from 84 contributors.
Read on to find out what’s new!
3.1 is a minor update. All changes should be backwards compatible with 3.0.x sites, but we do still recommend ensure extensions and themes are compatible before upgrading, and testing on a staging site or making backups for peace of mind.
CSV Import/Export
In the past, moving product data in and out of WooCommerce has required either premium importer plugins, or messing with WordPress XML files. We’ve tried to address this in 3.1 with our new CSV import/export solution which we hope will improve the experience for new users coming to our platform.
Our new importer supports CSV files and all built-in core props, as well as custom meta data if dealing with strings. Extensions can add columns and props of their own or to support more advanced data. Fields can be mapped by the user after uploading the CSV file.
Unlike our old Product CSV Import Suite extension, all product types, including variations, are dealt with in the same CSV file. The importer can also update existing products by ID and SKU (merge), or it can create new products instead.
The exporter let’s you choose which pieces of information you’d like to export (also includes meta data), and limit the export to certain product types.
Both tools use AJAX to prevent timeouts by exporting and importing in batches, and both can be started from the main Products screen.
We have usage and developer documentation on our wiki.
Manage your woo.com extension licenses in WooCommerce core
In an effort to improve the user experience for updating extensions purchased from woo.com, the “helper” (the code responsible for validating licenses and checking for updates) has been merged into WooCommerce core.It’s lightweight and will be added to the already existing “extensions” screen in admin, and should really help our customers ensure that their premium plugins are kept up to date with new functionality.
Search helpers:
WC_Order_Query
class
For developers, we’ve added some new search helpers for orders to allow you to query orders by multiple props. Usage is explained here.As an example, you could query all orders from a specific date range for users named John with the following code:
$orders = wc_get_orders( array( 'billing_first_name' => 'John', 'date_paid' => '2016-01-01...2016-12-31`, ) );
Magic!
Everything else
- We’ve made the “terms and conditions” checkbox on the checkout slide out the terms page contents inline, rather than just linking to it.
- In 3.0.x, when going to pay for an order assigned to a customer you’re presented with a pretty unfriendly “invalid order” message. We’ve improved this in 3.1. Now, you’ll either see a useful message if the order is not yours, or you’ll see a login form if not yet logged in.
- oEmbeds (e.g. to show videos) were previously non-functional when used in the product short description. With 3.1 they are supported!
- You can now set stock statuses for variations in bulk from the edit product screen.
- A small improvement when updating users manually in admin; you can now use the “Copy from billing address” button to populate the shipping address from the billing address in one click.
- Setup wizard improvements:
- A domestic shipping zone will be automatically created for your defined base country to make setting up shipping a little more streamlined.
- If using a non-WooCommerce theme, you’ll have the option to one-click install the Storefront theme if you want it.
-If you’re in the US you’ll get the option to install the WooCommerce Services extension which provides, amogst other things, USPS rates and shipping labels.
Upgrading to 3.1
3.1 is a minor update and should be compatible with 3.0.x sites. We still recommend testing + backing up prior to upgrading.
Template file changes in 3.1
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.1:
cart/cart-empty.php
– Added awc_empty_cart_message
function to handle the message displayed in a hookable manner.cart/cart-shipping.php
– Added a variable so shipping calculator is only shown on the first row when showing multiple packages.cart/cart.php
– Use get_max_purchase_quantity and fixed some logic.cart/mini-cart.php
– CRUD support.checkout/terms.php
– Support added for inline term display.single-product/product-attributes.php
– Added make_clickable.single-product/product-image.php
– Added data-caption support.single-product/product-thumbnails.php
– Added data-caption support.single-product/rating.php
– Using newwc_get_rating_html
function.single-product/review-rating.php
– Using newwc_get_rating_html
function.
Deprecated functions and methods in 3.1
The following functions are deprecated (not removed) in 3.1:
WC_Order_Data_Store_CPT::get_orders
– Usewc_get_orders
and the new search helpers.WC_Order_Item_Meta
– This class was actually deprecated in3.0.0
but a notice was not added.wc_display_item_meta
should be used instead.
How we tested 3.1
3.1 beta was released May 31st (~4 weeks ago) as was in beta for 2 weeks before we pushed out 2 release candidates. During this time we tried to iron out as many bugs as possible, whilst still maintaining updates for 3.0.x.
Additionally, for the first time, our team did some managed updates for actual customers on staging sites to pick up on any conflicts or bugs before the public release.
Thanks to everyone who helped test 3.1.
A huge thanks for our contributors!
A massive thanks to everyone in the community who have contributed, be that via issue reports, fixes, translation, testing, supporting other users or simply spreading the word!
-
WooCommerce 3.1.0 RC2 is available for testing. This includes fixes from 3.0.9, and fixes specific to RC1.
To test WooCommerce 3.1.0 RC2, you can use our WooCommerce Beta Tester plugin or you can download the release candidate here (zip).
Think you’ve found a bug? Please post in detail to Github.
The final version of 3.1 is due for release June 28th 2017. Huge props to everyone who has sent feedback about this release so far or found bugs.
-
The WooCommerce 3.0.9 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~34 commits made it into this fix release. The full changelog is below.
* Fix - Exclude sale products from category checks if coupon is not valid for sale products in coupon class.
* Fix - Fix missing states in state field when selected country differs from checkout data. Required template modification.
* Fix - Updatedwoocommerce_email_actions
to send email when order status changes from processing to cancelled.
* Fix - Fix undefined variables in terms and legacy order API endpoints.
* Fix - Correctly update variation outofstock term on save.
* Fix - Add a nonce and confirmation message for logging out via the customer my account page.
* Fix - Allow setting grouped_products via the API.
* Fix - Prevent edge case errors inwc_get_product_term_ids
.
* Fix - Remove extra escaping to fix saving of special characters in attribute terms.
* Fix - Stricter shipping method matching in COD to prevent conflicts.
* Fix - Recalculate totals after local pickup selection so taxes are recalculated.
* Fix - Add missing nonce to product sales report.
* Fix - Fix webhook save actions and ping the URL to test only once.
* Fix - Fix issue with CLI IDs which overlap with actual data.
* Fix - Normalise emails in coupons so lower/upper case is ignored.
* Fix - Added background color tox
button in product gallery edit box.
* Dev - Renamedwoocommerce_credit_card_type_labels
filter fromwocommerce_credit_card_type_labels
.
If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
Today, the release candidate for WooCommerce 3.1 is available! 3.1 is a minor release with several improvements and some new features, including a new CSV importer for products.
-
The WooCommerce 3.0.8 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~46 commits made it into this fix release. The full changelog is below.
* Fix - Include multi-dimensional array support in oAuth1.0.
* Fix - Stock/backorder notice when stock management is disabled.
* Fix - Handle shipping item taxes if set to avoid the legacy fallback.
* Fix - Variations should inherit purchase_note from parent.
* Fix - Check if subtotal is blank, not empty, before setting for order items.
* Fix - Cancelled email should be send for processing orders, not pending.
* Fix - Missing variable in legacy API.
* Fix - Correct price query when on a post type archive.
* Fix - Missing $ip Variable in geolocation class.
* Fix - A single multi-word attribute is fine for variation titles.
* Fix - Gallery should be updated even if empty in REST API.
* Fix - Fix saving of text attributes with special chars.
* Fix - Undefined index warning when saving variations with stock management disabled.
* Fix - Use meta id instead of key in WC_Order_Item::offsetGet.
* Fix - Format parent stock qty on read.
* Fix - Hide replies from recent reviews widgets.
* Fix - Use formatted weight and dimensions for variations.
* Fix - Ensure we have child before getting price to fix a notice in grouped products.
* Fix - Fixed unicode characters when saving webhook delivery logs.
* Fix - Avoid deprecated ID in legacy API.
* Fix - Add correct args to woocommerce_shipping_zone_method_deleted and woocommerce_shortcode_products_query hooks.
* Fix - Correctly append cache in product widget.
* Fix - Add ability to invalidate cache by object ID.
* Fix - Notice in structured data class.
* Fix - Only delete if an object has an ID in CRUD to avoid wp_delete_post using global ID.
* Fix - Avoid notices on checkout by ensuring all legacy data is correctly set.
* Fix - Add failed to processing event for the processing email.
* Fix - Store user ID and use that to determine if the session should be loaded or not. Ensures user data is correct and shipping calculator data is stored.
If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
Today we’re pleased to announce that WooCommerce 3.1 is available for beta testing!
You can download WC 3.1 Beta 1 here.
Release highlights
You may have noticed that it’s only been a couple of months since 3.0 was launched; with our move to SemVer we’re aiming to do smaller, more rapid releases with an improved effort to maintain backwards compatibility and add new features incrementally.
Since 3.1 is a minor release, there should be no breaking changes and functionality added in a backwards-compatible manner. Updating from 3.0 therefore should be a breeze.
Here’s what’s new in 3.1.
Built in product CSV Import/Export
We believe that new users should be able to move their data in and out of WooCommerce quickly and easily, so we’ve worked on a new built-in import/export solution!
Our new importer supports:
- Importing all core product data.
- String-based custom meta data can be imported using the
meta:
prefix. - Extensions can add columns and props of their own or to support more advanced data.
- Merging data can be done by ID or SKU.
- All product types can be imported from one CSV, including variations.
The exporter has support for:
- Choose which pieces of information you’d like to export.
- Export by product type.
- Exporting custom meta data is possible via a checkbox option.
Both tools use AJAX to prevent timeouts by exporting and importing in multiple batches, and both can be started from the main Products screen.
Here is a preview of the exporter in action:
And here is the importer importing some data:
The recent CRUD additions in WooCommerce core made building this import/export solution much simpler that it could have been using the WordPress meta approach. If you’re a developer and you’ve not yet used the new system you may want to check it out.
We look forward to hearing feedback about this new functionality!
Inline “terms and conditions” on checkout
In previous versions, defining a checkout terms page would add a mandatory checkbox to the checkout, as well as a link to the terms page.
In 3.1 we’ve enhanced this to show the terms page inline, so the user is kept on the checkout and can scroll through the content if desired.
Search helpers:
WC_Order_Query
classFor developers, we’ve added some new search helpers for orders to allow you to query orders by multiple props. Usage is explained here.
As an example, you could query all orders from a specific date range for users named
John
with the following code:$orders = wc_get_orders( array( 'billing_first_name' => 'John', 'date_paid' => '2016-01-01...2016-12-31`, ) );
Magic!
Manage your woo.com extension subscriptions in WooCommerce core
In an effort to improve the user experience for updating extensions purchased from woo.com, the “helper” (the code responsible for validating subscriptions and checking for updates) has been merged into WooCommerce core.
It’s lightweight and will be added to the already existing “extensions” screen in admin, and should really help our customers ensure that their premium plugins are kept up to date with new functionality.
Checkout pay for order page improvements
In 3.0.x, when going to pay for an order assigned to a customer you’re presented with a pretty unfriendly “invalid order” message. We’ve improved this in 3.1. Now, you’ll either see a useful message if the order is not yours, or you’ll see a login form if not yet logged in.
oembed for short descriptions
Does what it says; oembeds (e.g. to show videos) were previously non-functional when used in the product short description. With 3.1 they are supported!
Bulk update for variation stock statuses
A small improvement to help update variations in bulk; you can now set all stock statuses at once.
Customer profile “copy billing” button
A small improvement when updating users manually in admin; you can now use the “Copy from billing address” button to populate the shipping address from the billing address in one click.
Wizard improvements
A few improvements in our setup wizard:
- A domestic shipping zone will be automatically created for your defined base country to make setting up shipping a little more streamlined.
- If using a non-WooCommerce theme, you’ll have the option to one-click install the Storefront theme if you want it.
- If you’re in the US you’ll get the option to install the WooCommerce Services extension which provides, amogst other things, USPS rates and shipping labels.
Everything else…
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 changes in 3.1
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.1:
cart/cart-empty.php
– Added awc_empty_cart_message
function to handle the message displayed in a hookable manner.cart/cart-shipping.php
– Added a variable so shipping calculator is only shown on the first row when showing multiple packages.cart/mini-cart.php
– CRUD support.checkout/terms.php
– Support added for inline term display.single-product/product-image.php
– Added data-caption support.single-product/product-thumbnails.php
– Added data-caption support.single-product/rating.php
– Using newwc_get_rating_html
function.single-product/review-rating.php
– Using newwc_get_rating_html
function.
Deprecated functions and methods in 3.1
The following functions are deprecated (not removed) in 3.1:
WC_Order_Data_Store_CPT::get_orders
– Usewc_get_orders
and the new search helpers.WC_Order_Item_Meta
– This class was actually deprecated in3.0.0
but a notice was not added.wc_display_item_meta
should be used instead.
Release schedule and testing
We’re hoping to keep WooCommerce 3.1 in beta for the next 2 weeks.
Being fairly small in scope we’re expecting to do fixes for new features, but we’re not expecting to break extensions or backwards compatibility (since this is a minor release, not a major one). If you’re a developer you should still check extensions and themes to be safe of course!
If all goes well, Release Candidate 1 will be tagged on June 14th 2017 and will remain in RC for a further 2 weeks until June 28th 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.1, you’ll find it on the development branch on translate.wordpress.org.
Thanks to all of our testers and contributors.
-
The WooCommerce 3.0.7 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~24 commits made it into this fix release. The full changelog is below.
* Fix - Display of grouped product permalinks + names.
* Fix - Ensurewc_get_payment_gateway_by_order
has a valid order ID to avoid errors.
* Fix - Ensureget_plugin_updates
exists in API.
* Fix - Correctly set rating term after updating product visibility.
* Fix -is_ip_address
should be static.
* Fix - Handle clearing for 3, 4, and 5 columns in the product gallery.
* Fix - Some added protection against notices/errors in the assets and variation data-store files.
* Fix - If backorders are enabled, do not make variable products out of stock.
* Fix - Undefined function inclass-wc-embed.php
.
* Fix - Fix 'base location' not being returned via the settings API.
* Fix - When re-filling fields on checkout, only change the empty ones to avoid conflicts with gateway plugins and hidden fields.
* Fix - Make calculate tax function clear taxes if taxes are disabled on recalculation.
* Fix - Update all customer session address fields when updating via checkout.
* Fix - Support customer searches < 3 characters long, but with result limiting.
If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.
-
The WooCommerce 3.0.6 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.
~47 commits made it into this fix release. The full changelog is below.
* Fix - Fixed conflict between global attributes and custom attributes with the same names.
* Fix - Added missing "id" to API for shipping zone methods to support the CLI.
* Fix - Incorrect use ofwc_format_price_range
inget_price_html_from_to
.
* Fix - Clone each meta object when cloning WC_Data object to avoid modifying original meta stdClass objects.
* Fix - Fix non numeric warning for some order data.
* Fix - Fixed a warning when no customer country is defined for state input.
* Fix - Use term name when reordering so correct data is passed to the new order.
* Fix - Formatting issues in wc_display_item_meta.
* Fix - Check if IP address is valid in IP address detection code.
* Fix - wc_attribute_taxonomy_id_by_name should use wc_sanitize_taxonomy_name to prevent breaking special chars.
* Fix - Correct variable name in order structured data.
* Fix - Prepend new item keys with$items_key
to make them unique.
* Fix - Hide offers from structured markup when blank.
* Fix - Fixed "Proceed to checkout" button color in Twenty seventeen dark theme.
* Fix - Only set reply-to if the email + name is set.
* Fix - Correctly exclude terms in wc_get_related_products.
* Fix - Reset post data prevents grouped products working in shortcodes.
* Fix - Fix min price range comparisons.
* Fix - Properly save order items in legacy REST API.
* Fix - Use correct full size for variation images.
* Fix - Add noscript style for gallery.
* Fix - Fix/duplicate potential stock reduction with paypal.
* Tweak - Improve _wc_term_recount performance.
* Tweak - Improve plugin update detection in system status report to reduce timeouts.
* Tweak - Improve "Save Order" button to reproduce WordPress post/page behavior.
* Tweak - Added zipcode validation for France.
* Dev - Added woocommerce_shop_order_search_results filter.
If you spot any further issues, please report them to us in detail on GitHub so the development team can review – comments on this post are closed.