WooCommerce 3.1 Beta has landed

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.

Inline terms

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`,
) );


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.

Login form for payment

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.

Bulk status update

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.

Copy from billing

Wizard improvements

A few improvements in our setup wizard:

  1. A domestic shipping zone will be automatically created for your defined base country to make setting up shipping a little more streamlined.
  2. If using a non-WooCommerce theme, you’ll have the option to one-click install the Storefront theme if you want it.
  3. 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 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/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 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.

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.

27 responses to “WooCommerce 3.1 Beta has landed”

  1. The link to the 3.1 readme is incorrect – here’s the one that works:


  2. Un prieten Avatar
    Un prieten

    Please add romanian states to core. If there is a kind developer here which can submit a PR to Add romanian states to core you can find the code here : https://wordpress.org/support/topic/add-romania-states-to-next-version/
    I don’t know how to do that, so I ask for your help.

      1. Un prieten Avatar
        Un prieten

        Thank you Claudiu! You are the best!

  3. Rando Avatar

    Hi just installed 3.1.0 and noticed that some variable products can directly added to the cart from main shop page. When product added to cart and then refresh page i see select product wtf? 😀

    1. If you can replicate it properly, with only core installed, log an issue on Github.

  4. Egbert Avatar

    I’m trying to import (after finding import under Extra…) my standard CSV but have some troubles mapping to fields. Maybe I was used to use mappings that do not exist anymore. That mapping stems from the early days of the CSV import plugin (originally written by Mike I think).
    The settingsand mapping are not saved yet? I need the merge behaviour and have to select that option each and every time I read an CSV. Same for Advanced. I need to read the CSV from a file called merg1.csv in the webroot. Mappings are not saved; I have to set them with a new import/merge.
    Please consider just one page (like the old import/merge page) with all settings.
    The progress page is nice. Better that watching 8000+ lines of merged products and then scrolling all the way up again.
    TNX, Egbert Jan, NL

    1. The CSV formats of this and the plugin are not the same.

      1. Egbert Avatar

        OK. Where can I find an full example? The files in the dummy-csv dirctory are they up to date? What are the fields and the possible values/syntax? I’l looking for something like:

        Is there an error in the price calc/display? I get prices 100 times to big and are shown with a dot on the (archive) pages. WooCommerce settings are the same (. for 1000 , for decimal)

        Egbert Jan

  5. Egbert Avatar

    About translation. PSE do not translate the real internal field names. I get several dutch words in the pulldown list with fields. My colum header is called “post_title” and should map to “post_title”, NOT to “Naam” the dutch translation of “Name”. There are several.
    Egbert Jan

    1. We want nice names/translated names, not unfriendly technical terms.

  6. Reidtech Avatar

    Please allow us to list our extensions on woo.com again. The current situation is extremely unfair. (yeah, yeah, nobody said life was fair).

    It is bad enough that I have begun to consider trying to buy an existing listing from its owner to replace the content on their domain with my own, or just abandon the idea of releasing my extensions at all.

  7. magneticdud Avatar

    I *just* bought a license for a csv import plugin on codecanyon…..

    1. Sorry? ¯\_(ツ)_/¯

      1. magneticdud Avatar

        i was ironic, but my post wasn’t clear, thanks for your job 🙂

  8. Please include the option to keep the terms & conditions as a link to a separate page (the way it is now). Putting the full terms in a text box on the order page will likely reduce conversion rates (especially for longer terms) because it’s extra “stuff” on the checkout page.

    1. There is no extra “stuff” because it’s hidden by default?

      1. Hey Mike – I’m confused by your answer. So are the actual terms hidden, until the user clicks the “Terms & Conditions” link? And when they click the link, it shows a box on the page with the T&C? If so, I could see that working well. 🙂

        One thought, though, on that – I always CTRL-click any links on a shopping cart since I want to be sure they open a new tab (and don’t take me away from the cart). (Though I’m pretty sure the current T&C link actually does open in a new tab already.) So if a user CTRL-clicks this new link, will the box still appear correctly on the page?

  9. Great news about the new Product importer/exporter. Any chance this will get extended to include importing/exporting of Orders?

    1. Depends on feedback 🙂

      1. w00tw00t111 Avatar

        Highly, highly would like this – would be a HUGE helper when doing dev work on a separate private developer site and then need to merge changes and updates into the live site. Would prevent order loss when large updates need to happen from Dev to Live. (Let me know if a better use-case explanation is needed) let me know if I can add this suggestion to an official site/repo request 🙂

  10. Wait.. no more discount on renewals for extensions? I do not see that being received well.

    REALLY loving the import/export feature. Huge time saver in new projects and it will enable us to start with our own demo content more easily I suspect. Inline T&C is also nice.

    Please consider doing a “WooCommerce Services EU”-edition.

  11. Hello! will the product CSV Import/Export function support UTF-8 encoding? It is important as my online shop is in German. Thanks.

    1. Yeah it’s default.

Leave a Reply

Your email address will not be published. Required fields are marked *