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

    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:

    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.


  • 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 - Ensure wc_get_payment_gateway_by_order has a valid order ID to avoid errors.
    * Fix - Ensure get_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 in class-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 of wc_format_price_range in get_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.


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

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

    * Fix - Tooltip display within shipping zone modals.
    * Fix - Fix missing title for actions column on mobile.
    * Fix - Allow forward slash in telephone field.
    * Fix - Sort grouped products by menu order when displaying.
    * Fix - Fix term exclusion in term count queries.
    * Fix - Filter invalid products before returning them for wc_get_products.
    * Fix - Prevent orders being their own parent (causes errors).
    * Fix - Correctly migrate legacy shipping taxes data.
    * Fix - Make sure the meta data cache is not shared among instances.
    * Fix - Correct the stock display notice when a variable product manages stock for it's children.
    * Fix - On multisite, add user to blog during checkout if not a user to prevent errors.
    * Fix - Correct sale price date handling with some timezone setups.
    * Fix - wc_attribute_taxonomy_id_by_name needs to use lowercase attribute slug to work.
    * Fix - Make changes to the buyer's company name in the shipping section of checkout persist.
    * Tweak - Add required placeholder for meta fields in backend.
    * Tweak - Don't strtolower address strings on checkout validation messages.
    * REST API - Prevent password change notification when creating a customer.
    * REST API - Removed duplicated items returned in shipping and checkout endpoints.
    * CLI - Fixed missing shipping zones route.
    * Dev - Make get_price_html handling match 2.6 and pass all values through woocommerce_get_price_html filter.
    * Dev - Legacy customer class missing get_address / get_address_2 functions.
    * Dev - Restored filter woocommerce_checkout_customer_id during checkout validation.
    * Dev - Adds missing $this argument for all woocommerce_payment_complete_order_status filters.

    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.4 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.

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

    * Fix - Variations were not inheriting the product image and shipping class ID.
    * Fix - Prevent rating/review counts being duplicated when duplicating products.
    * Fix - Fixed gallery navigation between images with long captions.
    * Fix - Support transparent PNG in the gallery by setting a background color.
    * Fix - Removed name/company from the shipping address Google map links.
    * Fix - Fixed the address field sorting script on the checkout.
    * Fix - Fixed the upgrade routine for grouped products so that parents are unset.
    * Fix - Fixed support for WordPress 4.7 user locale settings.
    * Fix - Fixed default option filter for product types in the product meta box.
    * Fix - Improved the css in Twenty Seventeen for dark color schemes.
    * Fix - Fixed display of refunds in sales report.
    * Fix - Updated single-product/add-to-cart/variable.php template version to 3.0.0 since it had changes since 2.6.
    * Fix - Fixed warnings when product attribute do not exists.
    * Fix - Used a div for comment-form-rating to prevent invalid nested markup.
    * Fix - Fixed some logic that checks if order taxes are compound.
    * Fix - Fixed SKU checks to only exclude products that are trashed.
    * Fix - Fixed display of download permissions in first email sent after checkout.
    * Fix - Hidden the backorder notification stock text when notification is disabled.
    * Fix - Fixed incorrect stock numbers in low stock emails.
    * Tweak - Removed the non-functional order total input box, and combined the recalculation buttons into one working button.
    * Tweak - Updated Guided Tour videos.
    * Tweak - Updated js-cookie.js to 2.1.4.
    * Tweak - Updated schema.org URLs to use HTTPS.
    * Tweak - Status report request timeouts.
    * REST API - Fixed an issue that prevented deleting a term if errors were thrown during creation.
    * REST API - Fixed reports endpoint when querying by date.
    * REST API - Fixed ignored order parameters when changing order status.
    * Dev - Support guest orders in wc_get_orders function.
    * Dev - Fixed downloadable variation filters for download URLs.
    * Dev - Added safeguards to prevent infinite loops while saving coupons, products and orders in admin.
    * Dev - Added a fallback for queue_transactional_email if background sending is disabled.
    * Dev - Added has_shipping_address helper method.
    * Dev - Introduced woocommerce_order_item_get_formatted_meta_data filter.
    * Dev - Made wc_add_order_item pass correct values to woocommerce_new_order_item.
    * Dev - Fixed legacy_posted_data access in checkout class.
    * Dev - Fixed undefined property notice in WC_Order_Item::offsetGet.
    * Dev - Fixed PHP 7.1 warnings when using non-float values to wc_get_weight().
    * Dev - Fixed incorrect variable name in wc_add_order_item().

    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.3 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.

    This release fixes several issues we’ve had reported and found ourselves whilst monitoring the support forums. The full changelog is below.

    = 3.0.3 - 2017-04-13 =
    * Fix - Fixed an issue with variation tax-classes when set to 'parent'. This made taxes apply on top of the tax inclusive price in certain setups.
    * Fix - Escaped attribute translations in the cart.php template and bumped the template version to match.
    * Fix - Corrected the display of refund dates on the order screen.
    * Fix - Fixed the grouped product visibility check in the grouped.php template and bumped the template version to match.
    * Fix - Fixed the sale badge display for grouped products.
    * Fix - Added the itemReviewed structured data for product reviews to make it validate.
    * Fix - Made the get_attribute method work on variation objects.
    * Tweak - Turned off the deferred email sending by default which was added in 3.0. Whilst it does improve performance, there were compatibility problems on some servers. It can be enabled with a filter if desired.
    * Dev - Added backtrace information to the deprecation messages to help find problem plugins.

    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.2 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.

    This release fixes several issues we’ve had reported and found ourselves whilst monitoring the support forums. The full changelog is below.

    = 3.0.2 - 2017-04-12 =
    * Fix - Removed required states for GP, GF, KW, LB, MQ, RE and YT countries.
    * Fix - Made cache in the [products] shortcode respect filters from plugins.
    * Fix - Added missing woocommerce_cross_sells_columns filter.
    * Fix - Fixed shortcode rendering on the shop page.
    * Fix - Fixed incorrect sale dates when bulk editing variations.
    * Fix - Fixed calls to wc_reduce_stock_levels in PayPal and Simplify gateways.
    * Fix - Exclude "location" meta when reading customer meta data.
    * Fix - Updated emails/email-addresses.php, emails/email-order-details.php, content-single-product.php, checkout/form-shipping.php, myaccount/form-add-payment-method.php, myaccount/form-edit-address.php, myaccount/form-lost-password.php, myaccount/form-reset-password.php, myaccount/orders.php and myaccount/view-order.php template version to 3.0.0 since they had changes since 2.6.
    * Fix - Fixed default behavior of variation tax classes when originally set to "parent".
    * Fix - When duplicating products, do not copy slug, append "(Copy)" to the product name, correctly copy all meta data, and prevent children of grouped products being duplicated too.
    * Fix - Removed duplicated items when outputting cross sells on the cart page.
    * Fix - Fixed output of default "add to cart" text of external products in loops.
    * Fix - Fixed backwards compatibility of guest checkout rules when being altered by plugins directly.
    * Fix - Use correct thumbnail sizes for variation images in the new gallery.
    * Fix - Fixed captions on thumbnails and main image in the new gallery.
    * Fix - Trigger wc_fragments_loaded after add to cart fragment refresh.
    * Fix - Download permissions; Convert dates to timestamp on read so UTC is preserved.
    * Fix - Fixed notices under PHP 7.1 when sorting products by name (numeric).
    * Fix - Added additional checks to ensure objects are read before using class methods to avoid errors.
    * Fix - Removed legacy suggest.js code which was causing JS error on bulk edit.
    * Fix - Fixed warnings on the "Lost password" page and when loading a product with invalid attributes.
    * Fix - Made background emailer update the queue after a successful send so duplicate mails are less likely.
    * Tweak - Improved automatic variation name generation.
    * Fix - Typo in flexslider_enabled option in new gallery script.
    * Fix - woocommerce_notify_low_stock and woocommerce_notify_no_stock options had no effect.
    * Tweak - For downloadable files, only validate file type when dealing with relative paths.
    * Dev - Added product visibility terms to system status report to help debug.
    * Dev - Introduced woocommerce_admin_order_date_format filter to replace missing post_date_column_time.
    * Dev - Introduced woocommerce_update_customer_args filter to prevent updates to user objects if needed.
    * REST API - Fixed saving of variations in legacy REST API v3.
    * REST API - Fixed backwards compatibility of line_items meta in legacy REST API.

    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.1 fix release is now available. You can download it from WordPress.org or as an automatic update in your administration panel.

    This release fixes issues reported since 3.0.0 launch on Github and the support forums. The full changelog is below.

    * Fix - Show catalog hidden products within grouped products.
    * Fix - Fade in the gallery in if no images are set or it's custom.
    * Fix - Use wc_deprecated_function in WC_Deprecated_Hooks so notices aren't output in ajax requests.
    * Fix - Added back the ability to include extra items to the System Status using the woocommerce_system_status_environment_rows filter.
    * Fix - Coupon category restrictions and limits for variations.
    * Fix - Allow shortcodes and HTML in variation descriptions like in 2.6.
    * Fix - Unset post date when duplicating products.
    * Fix - Show a sale price on variable products if on sale and all prices are the same.
    * Fix - Corrected download links when a product has multiple downloads.
    * Fix - Prevented potential errors if the product type was not posted for any reason on save.
    * Fix - Updated single-product/up-sells.php, loop/add-to-cart.php, loop/rating.php, checkout/form-billing.php, and content-product.php template version to 3.0.0.
    * Fix - Included clearfixes on billing and shipping field wrappers,
    * Fix - Fixed styling of logs table in some languages.
    * Fix - Fixed display of variation attributes on old orders.
    * Fix - Use placeholder text for external products add to cart button text if left blank.
    * Fix - Fallback to home URL if no shop page is set for system status security check for HTTPS.
    * Fix - For variations, pull tax status and sold individually from the parent since there is no UI to set this at variation level.
    * Fix - Moved cron emails to background processing to avoid multiple sends.
    * Fix - Wrapped structured data in a hidden element when added to emails.
    * Fix - Missing gateway information in queued emails.
    * Fix - Fixed a bug that caused pages to permanently reload if "Default customer location" was set to "Geolocate (with page caching support)".
    * Fix - When forcing shipping to billing, set the shipping fields in the order itself.
    * Fix - Check for invalid objects in WC_Register_WP_Admin_Settings.
    * Fix - Check for error object in wc_get_object_terms.
    * Fix - Removed slashes in shipping meta data on the order edit screen.
    * Fix - Prevented permalink rewrites for attributes with missing names.
    * Fix - Fixed saving of meta data when multiple extensions use the save_post action.
    * Fix - Allow search customers by ID in edit order screen.
    * Fix - Prevents session data overwriting customer data on login.
    * Fix - Fixed cross-sell column display and variation support.
    * Fix - Fixed variable product stock syncing on save.
    * Fix - Included try/catch wrapper to prevent issues with Select2.
    * Fix - Prevented a bug that deleted all variations when the product type was change from variable to simple.
    * Fix - Switched to WPDB to quicker update when syncing titles for variations.
    * Fix - Exclude deprecated properties when loading a customer object.
    * Fix - Fixed notices while trying to order again.
    * Fix - Fixed notices when $wpdb-&gt;prefix is empty.
    * Fix - Prevent errors when loading a product with an invalid download file types.
    * REST API - Fixed missing array declaration in CRUD controller.
    * REST API - Removed extra exclude, include and search parameters from taxes endpoint.
    * REST API - Fixed variation description formatting.
    * REST API - Fixed incorrect attribute check in products endpoint in Legacy REST API.
    * REST API - Allow variation image to be unset.

    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.0 (previously 2.7), dubbed the “Bionic Butterfly”, into the wild! 3.0 has been in beta since December, development since August, and has had over 3000 commits from 115 contributors.

    Read on to find out what’s new!

    3.0 is a major update. As always, please ensure extensions and themes are compatible before upgrading, test on a staging site if you can, and make a backup for peace of mind.

    (more…)


  • WooCommerce 3.0.0 RC2 is available for testing. This fixes a bunch of issues from 3.0.0 RC1 which we’ve spent the last 2 weeks working on. Notable fixes include:

    • Fixed some edge case gallery issues such as galleries with no images, and zoom image sizes when flexslider is not used.
    • Fixed the 3.0 db updater to correctly set the outofstock term.
    • Fixed double add to cart issue on cart page when querystring contains add-to-cart.
    • Fix coupon removal in cart.
    • Added __sleep and __wakeup methods to data stores and data objects to avoid full object serialisation. Because of this, we were able to remove the special handling in email cron (since this is better), and remove the now defunct object caching in the data stores.
    • Prevent max on qty selectors being set to -1.
    • Improved default column definition in admin screens.
    • Fix to allow custom order item types from 2.6.
    • Fixed some bugs in the legacy API (using incorrect getters).
    • Various docblock/deprecation notice corrections.
    • Various RTL fixes.
    • Various fixes to prevent notices e.g. by casting floats when doing arithmetic.
    • Fixed API to return names instead of slugs in variation API.
    • Various REST API v2 schema and return type corrections (to match docs).
    • Removed timezone guesswork from set_date_prop method so offsets are correctly handled when the WP timezone setting is set to a UTC offset.

    The REST API v2 docs are also now live so be sure to check out what is now possible with 3.0.0 and the v2 API if you’re using it.

    To test WooCommerce 3.0.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.0.0 is still due for April 4th 2017. Huge props to everyone who has sent feedback about this release so far or found bugs.