WooCommerce 2.2 is being released today, and we have all of the details on the new release! We’ll go over the major changes to WooCommerce Core that have been made in this version, as well as all of the cool stuff that’s been added in this WooCommerce 2.2 Review.
Remember, as a best practice you should always upgrade on a staging or testing site first, then upgrade your live site once you’ve confirmed that there are no issues. It also helps to update extensions first, then WooCommerce core.
There are fewer structural changes to WooCommerce than there were in WooCommerce 2.1, which should make upgrading smoother. Version 2.1 added the REST API as well as endpoints, which changed the WooCommerce pages that were installed. While this made setup less intensive and made it far harder to break or delete core pages, it required updates to several core templates. As a result, themes that improperly override WooCommerce templates sometimes broke at update.
The major changes in WooCommerce 2.2 are related to orders and payments, but are far smaller changes and should not affect the frontend of the site. However, some nifty features were added because of the order status structure changes.
The Edit / Add order screen has been tweaked in WooCommerce 2.2 to provide a bit more information and to pave the way for refund support.
As a minor change, the payment method used has been added below the order title:
The “Order Details” table has also been updated. All costs are now included in the order details table so that they can be refunded if needed.
Note that admins can no longer edit paid orders with WooCommerce 2.2. If you need to add something to an order, such as a gifted product, you’ll have to change the order status to on-hold or pending, then back to processing or completed. Unpaid orders can be edited:
The most significant change in WooCommerce 2.2 is now possible because of the changes to the order structure and orders page: refunds directly from WooCommerce and automatic refunds for gateway extensions that support refunds. To issue a refund, you’d previously have to log into your merchant account and issue a refund, then update the order status to “refunded” in WooCommerce. However, there was no way to note partial refunds if one item out of a multi-item order was refunded. This has now been added to WooCommerce core.
While only a small number of gateways support refunds at the moment (mostly just the core payment gateway methods), developers are now starting to add refund support to their gateways. For example (since I have insider info here 😉 ), we’ve already begun working on this for several gateways at SkyVerge.
Want to start using refunds immediately? The core PayPal Standard gateway can process automatic refunds from WooCommerce, as well as the brand new Simplify Commerce gateway.
Simplify Commerce is replacing Mijireh as a core payment processing option, and the Mijireh integration is now available as a free Mijireh extension. If you previously used Mijireh, the Mijireh installation will be available with one click when you upgrade WooCommerce.
Now how about some more detail about refunds?
Manual Refunds can be executed for any WooCommerce payment gateway. A manual refund will allow you to mark certain order items as refunded, and will include tax fees as well as optionally allowing you to refund shipping or other fees. This will not automatically send a refund to your payment gateway, but can be done for any payment method in WooCommerce.
Clicking the “Refund” button will bring up a refund screen where a shop admin can select which items or enter an amount to refund, then optionally add refund notes for reference.
Refunded items will now have refund details shown, and the order total will also include a “Refunded” total for reference.
Manual refunds will not change order status or add order notes, so you’ll need to change the order status to “refunded” manually if you process a manual refund for an entire order.
Gateway refunds will provide automatic refunds from WooCommerce for payment gateways that build-in support for refunds. When you set up a gateway, you may now see more settings needed to process refunds. For example, PayPal Standard has extra settings to complete if you’d like to automatically process refunds:
When you process a gateway refund, a “Refund $$ via GATEWAY” button will be added if the gateway supports automatic refunds.
If you do a gateway refund, the refund details will automatically be sent to your payment gateway so that you don’t have to log into your merchant account to complete a refund, then mark or note this within WooCommerce. This will save huge amounts of time for merchants that process hundreds or thousands of orders each month.
Order notes will also be added to signify that a refund has been processed. If you refund the total amount for the order, the order status will even automatically be updated to “refunded”.
Order statuses will not change for partial refunds, as part of the order has still been processed and completed.
There are a few other significant changes in WooCommerce 2.2 to be aware of.
Language packs have been removed from WooCommerce core, as they add a lot of code that may not be necessary for your site. Instead, the appropriate language packs will automatically download if your WordPress language is set as something other than English.
Inventory management has also gotten some refinement. Backorders and stock can now be configured on a per-variation level rather than simply for the parent product. In WooCommerce 2.1, “In stock” vs “Out of Stock” had to be managed for a parent product:
In WooCommerce 2.2, the “Stock Status” has been moved to the variation level, but the ability to set a parent stock level and allow backorders remains.
In WooCommerce 2.1, stock level could be managed on a per-variation basis, but backorders and stock status could not be managed.
A “Manage Stock” option for variations has been added, which allows for backorder and stock status management on a variation level if enabled.
The new error logs tool is also really handy for troubleshooting. This gives you access to error logs right within your WooCommerce admin so you don’t have to retrieve them via FTP. A new “Logs” tab has been added under System Status:
The final small change has to deal with shortcodes. WooCommerce core has an add-to-cart shortcode that allows you to simply output a price and “Add to cart” button for a product anywhere on your site. This is handy for stores that sell products on landing pages, via blog posts, or anywhere outside of the WooCommerce product page. However, these shortcodes had no way of adding a quantity of greater than one.
The shortcode previously looked like this:
[add_to_cart id="" style="" sku=""]. You could add an id or a SKU to identify the product, then optionally add styles to the button. Now the
add_to_cart shortcode accepts a custom quantity attribute as well:
[add_to_cart id="" style="" sku="" quantity=""].
When the “Add to Cart” button is clicked with a quantity set, the specified quantity of the item is added to the cart.
The other major changes to WooCommerce 2.2 are great from a development perspective. The WooCommerce REST API functionality is now well-rounded with the addition of PUT / POST / DELETE methods for products, orders, and coupons with v2 of the API. This means that external systems, such as the WooCommerce iOS app, will now have the capability to read, create, update, and delete products, coupons, and orders from your store if you’re running WooCommerce 2.2+.
This really opens the API up for further external integrations, so I’ll be curious to see what springs up over the next few months once these REST API changes are in place.
Webhooks were also added in WooCommerce 2.2. Webhooks will allow notifications to be created for core WooCommerce actions, such as adding items to the cart, creating orders, new customers, updating inventory, and more. This opens up easy integrations for push notifications or other external services, which can use these webhooks to trigger actions of their own.
For example, webhooks for inventory updates could be used by external inventory services (such as TradeGecko) to update inventory for your store. Webhooks also open up some exciting development opportunities with WooCommerce.
The refund support in WooCommerce 2.2 is a really awesome addition. Not only does this greatly improve record keeping an order management within WooCommerce, but the ability for gateways to tie into this functionality to automatically process orders is a great benefit for shop owners. Refunding orders was a big hurdle for larger shops, so it’s great to see some support for this.
The “For Developers” changes shouldn’t be underestimated, however. The completed REST API and webhooks open up some really great opportunities for WooCommerce integrations outside of WordPress. With the REST API and webhooks, external systems can interact directly with WooCommerce rather than requiring an integration plugin to do so. I’m definitely looking forward to seeing what projects implement these new changes.
Want to read more about this release? You can check out the changelog for a full list of changes, or check out one of the following sources:
- The beta 1 release announcement includes a list of the major changes.
- The beta 2 announcement also has details on the rest of the major changes.
- WooThemes has more details on their blog.