Today we’re proud to release WooCommerce 2.5 “Dashing Dolphin” into the wild! 2.5 has been in development for ~5 months and has seen around 1600 commits from 42 contributors.

This is another evolutionary release which focusses on improvements to existing functionality, as well as stability and performance. We do however have some new features to mention in 2.5 which developers in particular should enjoy using.


Introducing WooCommerce CLI

The WooCommerce CLI (command line interface) lets you perform many actions on your store via the command line, such as creating customers and coupons. This should be very useful for power users! Here is a quick example of the CLI in action, in this example updating then deleting a coupon.

2016-01-12 10_54_27.gif

The documentation for our CLI can be found here.

A new sessions table

Being stateless, WordPress doesn’t have an in-built way of handling session data. You can use cookies or implement PHP Sessions, but both have limitations and some hosts aren’t equipped to deal with them by default.

Early on we decided to adopt a solution based on wp-session-manager whereby you have a cookie to identify each user, and have their session data stored in the WP options table. This worked well, and has served us nicely until now, however it did lead to problems with scalability and data cleanup.

For these reasons we’re introducing a new session handler which uses custom tables, rather than the WordPress options table.

You can read more about this feature here.

Performance improvements

We made a number of performance improvements in 2.5, mainly working on optimising our usage of transients which we covered in our beta 2 post.

tl;dr we’ve audited all transients, removing those that are unnecessary and moving to alternative forms of data storage and caching where possible. Combined with the new sessions table, query speed should be improved due to reduced usage of the wp options table.

Tax rate settings UI

We’ve been experimenting with backbonejs to improve the user interface recently, which should feature more prominantly in core from 2.6. In 2.5 we’ve used it to improve the tax rate input screens, which now saves via ajax and has a new inline search.

2016-01-12 12_04_11.gif

Improved checkout flow

We touched on some checkout screen tweaks in our beta 2 post here and the beta 1 post here. Most notably we have:

  • Moved the terms and conditions box before the place order button
  • Tweaked default call to action button styles
  • Added error recovery when malformed JSON is returned by the ajax methods.
  • Removed the ‘estimated’ text from the cart totals area.
  • Made it so when only 1 gateway is enabled, the radio buttons will be hidden.
  • Added password strength indicators when creating an account.

2016-01-12 12_06_35.gif

Everything else…

There are over 25 tweaks listed in the changelog, including:

  • Moved emails in the email settings to a table to keep things organised.
  • wp.template usage for variations which now allows developers to change the layout of single variations.
  • Removed the welcome screen.
  • For coupons with category restrictions, respect the category hierarchy.
  • A new wc_array_cartesian function to generate variations in a logical order.

And some REST API improvements for developers using it:

  • Added /products/shipping_classes endpoint.
  • Added support to POST, PUT, and DELETE categories and tags.
  • Added support to filter products by tag, category, shipping class, and attribute.
  • Added tax and tax_class endpoints.

We hope you’re excited about these changes🙂

Template Changes

With most new releases, updates to template files are needed in order to add or change functionality. When we make a major change, the template version is incremented. Themes which bundle these templates may need to update them to reflect core.

We covered some reasoning behind the larger changes in our beta 1 announcement.

There are 7 new template files (see the beta 1 post). The following template files have been version bumped in 2.5:

  1. single-product/review.php – Added new action hooks + verified reviewer code
  2. single-product/add-to-cart/variable.php – Correctly escape variation data.
  3. order/order-details.php – woocommerce_purchase_note_order_statuses filter.
  4. order/order-details-item.php – woocommerce_purchase_note_order_statuses filter.
  5. loop/add-to-cart.php – Uses supports_ajax_add_to_cart method.
  6. global/quantity-input.php – Changed min and max attributes.
  7. content-widget-product.php – File was missing version.
  8. content-product.php – Action hooks to handle anchor output.
  9. content-product_cat.php – Action hooks to handle anchor output.
  10. checkout/payment.php – Support for new terms.php template file.
  11. checkout/form-pay.php – Support for new terms.php template file.
  12. cart/mini-cart.php – URL escaping.
  13. cart/cart-shipping.php – Extra filters and some simplification of strings.

Additionally all email templates have been updated to use a unified order details template (email-order-details.php).


Since November 9th 2015 we’ve had 3 beta versions and 2 release candidates giving ample warning to developers to test, including posts on Twitter, Facebook, and our dev blog.

Our beta tester plugin is installed on around ~60 sites according to .org, but this number does not include manual installs from Github. According to Github API, RC1 was downloaded manually over 100 times so we 190 times, so it’s good to see people testing things out.

Internally we’ve been testing the RC on some new stores we’re building (for WooConf), on, and on We have also tested all WooThemes extensions for compatibility, and had our 3rd party devs do the same.

We also know at least one user accidentally updated and had no upgrade issues😉

however it happened, I never noticed until now. The store’s got about 10 WooCommerce extension plugins. So, it looks like WC 2.5 isn’t going to break as many things as previous major releases!

Thanks to everyone who contributed, tested, and translated this release and we hope you all enjoy using it!