Changelog

  • Today we’re excited to release WooCommerce 3.2 into the wild! 3.2 has been in development since July, and has had over 1610 commits from 98 contributors.

    3.2 is a minor update. All changes should be backwards compatible with 3.0 and 3.1 sites, but we do still recommend ensuring extensions and themes are compatible before upgrading by testing on a staging site, and making backups for peace of mind.

    (more…)

  • WooCommerce 3.2.0 RC2 is available for testing. This includes a few small fixes.

    To test WooCommerce 3.2.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.2 is due for release October 11th 2017. Huge props to everyone who has sent feedback about this release so far or found bugs.


  • Today, the release candidate for WooCommerce 3.2 is available! 3.2 is a minor release with several improvements and some new features, including the ability to apply coupons on the orders admin screen.

    (more…)


  • We have a small number of remaining open issues that need to be fixed before we can tag and send out the release candidate (RC) for WooCommerce 3.2. When we ship an RC it means we think we’re done, so it is important that all known issues are fixed before that happens. To ensure a successful release and give everyone time to test we have pushed back the RC and the release of WooCommerce 3.2 by one week. Here is the new release schedule:

    Release candidate: September 27th 2017
    WooCommerce 3.2: October 11th 2017

    You can read more about WooCommerce 3.2 and the exciting new features we have planned here.

    September 26th: Dev chat #11

    The next chat will be on September 26th at 16:00 UTC in the #core channel of the WooCommerce Community Slack. If you don’t already have access to the group, you can request an invite at the bottom of the WooCommerce developers page.

    Here is the agenda:

    • 3.2 release candidate
    • WooCommerce minimum supported PHP version

    If you have anything to propose for the agenda or related to the above, please leave a comment below.

    See you there!


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

    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

    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.

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


  • The WooCommerce 3.1.2 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.

    ~35 commits made it into this fix release. The full changelog is below.

    * Fix - Importer: Prevent multiple placeholders being created when mixing IDs and SKUs.
    * Fix - Importer: correctly set stock management props.
    * Fix - Importer: Allow "unfiltered_html" for name, description and short description fields.
    * Fix - Fix filename image handling.
    * Fix - Rest API: Allow OPTIONS requests.
    * Fix - Fixed missing reviews in product_page shortcode when querying by SKU.
    * Fix - Don't subtract negative taxes in net sales report.
    * Fix - Sort by order + zone ID as a fallback in shipping zones so the zones always match in the same order.
    * Fix - Corrected subject and heading in customer refunded email.
    * Fix - Corrected handling of custom checkbox fields in checkout get_posted_data method.
    * Fix - Fix admin help videos async property.
    * Fix - Fixed price filters by introducing precision.
    * Fix - Improved customer IP address detection.
    * Fix - Fix dark theme readability.
    * Fix - CLI tools command.
    * Fix - Adjusted shop manager role to prevent unfiltered HTML being used.
    * Fix - Various notices/warnings.
    * Dev - Correctly invalidate cache after saving order items.
    * Dev - Added woocommerce_data_store_wp_{$this->meta_type}_read_meta 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.


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

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

    2. 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 - Add cart_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 a wc_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 new wc_get_rating_html function.
    • single-product/review-rating.php – Using new wc_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 – Use wc_get_orders and the new search helpers.
    • WC_Order_Item_Meta – This class was actually deprecated in 3.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!

    mikejolleyclaudiosanchesclaudiulodrokovsheninrellectjeffstieler
    mikejolleyclaudiosanchesclaudiulodrokovsheninrellectjeffstieler
    dixitadusaracrodasbekaricenabsulfranticpsyxbor0
    dixitadusaracrodasbekaricenabsulfranticpsyxbor0
    josemarquesv18ryelledaigo75judgejNinos
    josemarquesv18ryelledaigo75judgejNinos
    rasmusbeemgkjustinshrevepeterrathChoubypnpetroff
    rasmusbeemgkjustinshrevepeterrathChoubypnpetroff
    rafsuntaskinughimirethenbrentmattyzaryanr14kloon
    rafsuntaskinughimirethenbrentmattyzaryanr14kloon
    mdrahuljobthomasalvinkondakilbotjavorszkyWPprodigy
    mdrahuljobthomasalvinkondakilbotjavorszkyWPprodigy
    helgathevikingavinapateljamesckempdanielhuesken1doChunkford
    helgathevikingavinapateljamesckempdanielhuesken1doChunkford
    nishitlangaliyaRamyTalalom4jamesreescottvinoddalvitobiasschutter
    nishitlangaliyaRamyTalalom4jamesreescottvinoddalvitobiasschutter
    treyrichpixedelicChaseWisemanpablo-sg-pachecocorsonrYachYaroslav
    treyrichpixedelicChaseWisemanpablo-sg-pachecocorsonrYachYaroslav
    ovidiumghtrodrigoprimoamansainidavefxgedexumeshnevase
    ovidiumghtrodrigoprimoamansainidavefxgedexumeshnevase
    RamoonusbelcherjlawkwokMaedahBatoolatimmerjaumarar
    RamoonusbelcherjlawkwokMaedahBatoolatimmerjaumarar
    jgacuca567cristiangramaJon007AnwerARSiR-DanieLhussong
    jgacuca567cristiangramaJon007AnwerARSiR-DanieLhussong
    mihaigrigoribhubbardfaisal-alviakashsonicrwilliamtimelsass
    mihaigrigoribhubbardfaisal-alviakashsonicrwilliamtimelsass
    roykhogarethallisondavdebcomtivnetpsiicokowsar89
    roykhogarethallisondavdebcomtivnetpsiicokowsar89

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