• Today we tagged WooCommerce 2.5 Beta 3. Now you can witness the power of this fully operational beta.

    Download it here.

    If you missed our posts about previous beta releases, you can read about 2.5 Beta 1 here and beta 2 here. Thank the maker!

    Changes since beta 2

    Here are our changes since beta 2:

    • Refactored our add-ons screen so it can be extended by add-ons.
    • Made some small changes to widgets API to be extended by add-ons.
    • Added a get_id() method for products.
    • Fixed some conflicts with PHP7.
    • Additional hooks for order line items.
    • Round discount totals to avoid issues with floats.
    • Various API and CLI tweaks/improvements.
    • Improved the usefulness of the wc_get_template_part filter.
    • Fixed some currency code.

    We also made a decision to remove the ‘dropdown’ view of shipping options in the cart. This was so we could have a hook after each shipping method to add additional options or text if an addon wanted to display something there. Dropdowns restrict this ability and would mean maintaining two completely different sets of code to cater for each.

    You can see the full list of commits since beta 2 here.

    Final call for testers

    What? You haven’t tested beta yet? I find your lack of faith disturbing.

    Everything is proceeding as we have foreseen, so the Release Candidate is still planned for Jan 4th–8th 2016 so long as we stay on target. Developers please test your code before then. Try not. Do. Or do not. There is no try.

    We also welcome user tests, but we recommend using a development site, since there may be undiscovered bugs.

    We have a beta testing plugin to make obtaining the beta release and staying updated simple. We suggest grabbing that if you would like to be involved.

    Please raise any issues found on Github with a [2.5] issue title prefix so we see them right away. We would be honoured if you would join us!

    And of course, may the force be with you.


  • Just a small update today – 2.4.12 release is now available.

    You can download it on WordPress.org or as an automatic update in your administration panel. A total of ~10 commits made it into this release fixing a few 4.4 compatibility issues.

    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 2.4.11 release is now available!

    You can download it on WordPress.org or as an automatic update in your administration panel. A total of ~49 commits made it into this release fixing a few small issues and improving compatibility with WordPress 4.4. See the changelog for the full details.

    One of the biggest changes we made in this version was to add basic support for 4.4’s new embeds feature. We enhanced embeds for products slightly by including rating, pricing, short description and product links as pictured below.

    There is also included support for the new default theme; Twenty Sixteen.

    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.


  • November has been a busy month for the WC core squad; prepping for WordPress 4.4 support, working on the 2.4.11 fix release (out Monday) and getting 2.5 beta 2 prepped and ready. We’re happy to report 2.5 beta 2 is now upon us!

    You can download it here.

    If you missed our post about 2.5 Beta 1, you can catch up with what has been happening here.

    The time for testing is now

    Feature freeze is in effect. Only fixes should be added from this point.

    As mentioned in our beta 1 post, we still aim to drop the Release Candidate between Jan 4th–8th 2016 so if you’re a developer you need to test your plugins and themes as soon as possible. Please take responsibility for your own code.

    End-users are also welcome to test their customizations or give feedback on the release. Beta 2 is not considered ‘stable’ so don’t run it on a live site unless you know what you’re doing, but by all means take it for a test run.

    We have a beta testing plugin to make obtaining the beta release and staying updated simple. We suggest grabbing that if you would like to be involved.

    Please raise any issues found on Github with a [2.5] issue title prefix so we see them right away.

    Ch-Ch-Changes since beta 1

    Since beta 1 we’ve made numerous improvements. You can compare beta 1 to master here.

    Most of the changes have been fixes and changes for 4.4 compatibility, but there were a extra things we wanted to include before a feature freeze (which is now in effect).

    Transient Overhaul

    We’ve already done a lot of work to reduce options table usage by adding a new session handler in 2.5. Transients however were still problematic, particularly the ones with dynamic naming or that expire after a post save.

    To improve this we did a review of the transients we were setting, and worked out the best way forward for each to balance performance with storage.

    • Store rating and reviews in postmeta rather than transients – this data is product specific, and only needs clearing when product specific events, such as a new comment, occur.
    • Simplified how wc_var_prices is stored so that only one transient is used per product at all times.
    • Store cached shipping rates in the customer session, rather than a separate global transient.
    • Made the related posts transient more robust to avoid multiple transients at once.
    • Made get_coupon_id_from_code use WP Caching instead of transients.
    • Store the product ids associated with terms in term meta instead of a separate transient.
    • Removed transients from get_total_stock as there was not much gain.
    • Use WP Cache and invalidation for taxes instead of transients.

    Overall this should make a dramatic improvement to those facing issues with large numbers of transients and no way to clear them, whilst still allowing performance gains on sites using object caching.

    Checkout Tweaks

    To streamline and simplify our cart and checkout process we’ve made a few minor tweaks since beta 1.

    On our cart page we used to show a (dynamic) notice stating that everything was estimated.

    Since this often needed to change based on the specific setup, it was quite difficult to make the text generic enough for all situations, and does interrupt the flow somewhat. So we’ve removed that and made any information show up in context instead.

    On the checkout page itself, another subtle change made for consistency, the terms checkbox is now aligned left and shows the required asterisk.

    Finally, after reviewing the template code for emails it was aparent that having the order table duplicated inside each email template was a waste. This has now been unified into a single template file.

    Malformed JSON checkout response recovery

    A nice addition; if a rogue plugin does decide to break the checkout process, this commit should recover where possible by attempting to pre-parse the JSON.

    wp.template usage for variations

    2.5.0 introduces wp.template usage to control the appearance of a single variation (which is entirely populated by JavaScript).

    Since beta 1, this has been tweaked to load into the footer when the variations JS script is present, and because of this should be backwards compatible with 2.4.0 templates and other plugins. We tested this with the help of Manos who develops composite and bundled product extensions.

    And everything else…

    You can see the full changelog here, and view a full comparison of changes between 2.4 and 2.5 here.

    Thanks for testing in advance!


  • WC 2.5 codename “Dashing Dolphin” has been tagged for testing. This release has seen a short development cycle of ~3 months and comprises of ~1000 commits from 21 contributors.

    You can download beta 1 here.

    Release Highlights

    2.5 mostly contains enhancements to existing functionality, but we have added some new features which developers will appreciate such as WP CLI support!

    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 useful for power users.

    woocommerce-wp-cli-demo

    The post here has more details on the CLI.

    The WooCommerce REST API has been further enhanced with some new endpoints:

    • /products/shipping_classes to update product shipping classes.
    • POST, PUT, and DELETE for product categories and tags.
    • Added support to filter products by tag, category, shipping class, and attribute.
    • Added tax and tax_class endpoints for setting tax rates.

    The REST API documentation will be updated with this new endpoints soon.

    For performance and scalability 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.

    Also related to performance, we’ve improved the way in which verified reviews are stored and retrieved, and we’ve improved backend searches.

    Some admin screens have been tweaked; most notably the tax settings screen which is now ajax enhanced/faster and supports search.

    The email settings screen has also been tweaked to remove the sub-navigation links in favour of a table.

    The checkout and order flows have also had some adjustment:

    • When only 1 gateway is enabled, the radio buttons will be hidden.
    • We now only display the coupon form on the checkout if a coupon hasn’t yet been applied.
    • We have added a handy ‘pay’ link to the order screen which you can send to customers.
    • We have added the terms and conditions checkbox to the pay page, which was previously only shown on checkout.
    • Password strength indicators are now displayed on checkout when creating an account.
    • If payment fails, admin will receive an email.
    • When a WordPress user is deleted, their orders turn into guest orders.
    • When calculating order taxes, tax settings are respected and default to the base country.
    • Order notes are added to record manual email sends to customers.

    Other notable tweaks include:

    • Variations are now generated in a logical order using a new wc_array_cartesian function.
    • Variations will fade in to avoid the initial ‘flicker’ during page load.
    • Reports now show both net and gross averages.
    • The welcome screen is no more.

    You can see the full changelog in the readme file.

    Template changes

    For frontend templates we’ve changed some files to make templating more flexible:

    • Product archive anchors are now hooked into templates rather than hard coded.
    • We’ve added template files for the customer details list in emails (emails/email-customer-details.php)
    • Revised single variation cart template. Template files now exist for variations, and the cart button will display (disabled) when no selections are made.
    • New star ratings. The old one was 5 separate buttons. This new one consolidates the 5 options into one element making it leaner visually and more intuitive. Works in IE9+ with a graceful degradation for IE8.

    The following template files have been version bumped in 2.5 and may require theme updates:

    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.

    The following template files are new in 2.5.0:

    1. single-product/add-to-cart/variation.php
    2. single-product/add-to-cart/variation-add-to-cart-button.php
    3. emails/email-customer-details.php
    4. emails/plain/email-customer-details.php
    5. emails/admin-failed-order.php
    6. product-searchform.php
    7. checkout/terms.php

    Release Schedule

    Beta 1 is out today (Nov 9th) and the beta testing period will run through to the end of the year to avoid a release during the holiday season. Subsequent betas will be released as needed.

    If all goes to plan, Release Candidate 1 will be tagged sometime between Jan 4th–8th 2016, with the final release dropping a week later.

    How to beta test

    We posted a nice little write-up on beta testing here which should get you started. Please read that and jump right in!


  • The WooCommerce 2.4.9 release is now available on WordPress.org or automatic update in your administration panel. A total of ~18 commits made it into this release fixing a few small issues, the main one being the error handling in our Geo IP library. See the changelog for the full details.

    An XSS issue within the price.php template file was also fixed, however this one would require edit/admin permissions to take advantage of. The template version was bumped just in case, so if you’ve overridden this file you’ll want to update your copy. See this commit.

    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 2.4.8 release is now available via WordPress.org or automatic update in your administration panel. A total of 30 commits made it into this release fixing several small issues and making a few tweaks to the API. See the changelog for the full details.

    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 2.4.7 release is now available via WordPress.org or automatic update in your administration panel. A total of 164 commits made it into this release.

    Here are the highlights:

    1. For geolocation with static cache support, ensure hash is appended during form submission.
    2. Remove use of ‘input’ event in checkout scripts to prevent IE11 triggering updates on placeholder change.
    3. Added missing monthly cron schedule.
    4. Only run maybe_set_cart_cookies if cart was loaded to prevent notices.
    5. Escape add to cart messages to stop translations from breaking cart events.
    6. AJAX variations not being found in some cases when product version was < 2.4, but attributes were updated after sync().
    7. To prevent discounts being applied in ‘random’ order (based on order added to cart), sort cart items based on subtotal during calculate_totals.
    8. We changed the way prices are cached for variable products.

    We also made some smaller fixes and tweaks based on feedback. See the changelog for details.

    Not shown above, we’re also experimenting with a method of keeping prices the same regardless of tax rate (some systems call this universal pricing). This is experimental and subject to change, but to enable this functionality you can use add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_true' ); Use at your own risk though!

    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 2.4.6 release is now available via WordPress.org or automatic update in your administration panel.

    A total of 41 commits made it into this release. Here are the highlights:

    1. Fixed grouped product is_purchasable check during add to cart.
    2. Improved bulk variation editing.
    3. Final fixes for ajax variation < 2.4 attribute name handling.
    4. During updates, only recreate .htaccess if not using redirect download method.
    5. Handle non standard decimals in flat rate costs.

    We also made some smaller tweaks based on feedback. See the changelog for details.

    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 2.4.5 release is now available via WordPress.org or automatic update in your administration panel.

    A total of 76 commits made it into this release. Here are the highlights:

    1. Fixed a case where global text based attributes were not saving correctly.
    2. Fixed a case where display name was not checked/set correctly when editing your account.
    3. Fixed ‘no shipping’ messages for state-less countries.
    4. Fixed cache flushing after scheduled sales ending.
    5. Allowed users to install translations for the current language during the Setup Wizard.

    We also made some smaller tweaks based on feedback. See the changelog for details.

    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.