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


  • The WooCommerce 2.4.4 release is now available via WordPress.org or automatic update in your administration panel.

    A total of 24 commits made it into this release. We’ve continued going through the forums and issue reports on Github to find any edge-case issues missed during beta. Thanks for the reports!

    We have included fixes for the following issues:

    1. Fixed a case whereby having > 20 variations with ‘any’ attribute set would return no matches
    2. Fixed some entity issues with attributes containing quote characters
    3. Fixed an issue where COD was checking for shipping even if the order was virtual

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

    A total of 16 commits made it into this release. We’ve continued going through the forums and issue reports on Github to find any edge-case issues missed during beta. Thanks for the reports!

    We have included fixes for the following issues:

    1. The wc_customer_bought_product() function was returning false. This query has been corrected.
    2. Some themes using older markup for tabs were not showing/hiding correctly.
    3. There was a problem with AJAX variations on the frontend when using quotes in attribute names.
    4. When removing a variation in the backend,the current page is now maintained.
    5. Refund email subjects were fixed when a downloadable product was inside the order.

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

    A total of 22 commits made it into this release. We’ve spent the last 24 hours going through the forums and issue reports on Github to find any edge-case issues missed during beta. Thanks for the reports!

    We have included fixes for the following issues:

    1. There was a case whereby if a variation was out of stock, it’s price was not reflected in the parent variable products price display
    2. If ajax add to cart was disabled, 2 products would be added to the cart instead of 1
    3. We’ve fixed the ordering args you can pass into the [product_category] shortcode
    4. There was a minor rounding issue with prices including tax with certain combinations of prices (half rounding issue)

    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.