Changelog

  • We released a new version of WooCommerce Additional Variation Images, this version packs some changes to the behavior, if you’re writing code that integrates with this plugin, read along.

    The 1.8.0 fix release changes the way in which Additional Variation Images galleries are shown on product pages. This has resulted in a change to some of the jQuery event triggers available previously.

    In the old version, when a variation was chosen on a products page, an Ajax event would be fired to find variation images, and then these images would be injected into the existing product gallery. The images that were there previously were removed and stored in memory—events were fired based on this ‘swapping’ of images.

    The problem with this approach we found was that:

    • After swapping images, the gallery could fail to re-initialise.
    • Some scripts used in the gallery (Flexslider) would break if re-initialised on the same parent element.
    • Restoring the original gallery was overly complex due to the differences and complexities between the original gallery HTML on page load, and the HTML after Flexslider has initialised.

    To avoid these issues, the new version does not manipulate gallery HTML, re-initialise components, or attempt to swap images. Instead, the HTML for a new gallery is inserted into the page, initialised once, and the old gallery is hidden from view (not removed from the page).

    As well as fixing the original problem, there are some other side benefits to this approach including reduced complexity (no HTML needs to be directly manipulated), and no need to load the same variation images multiple times if variations are de-selected then re-selected; all galleries remain hidden on the page.

    Developers need to be aware that as a result of these changes, some of the event triggers have been removed since they are no longer relevant. These include:

    • wc_additional_variation_images_frontend_on_reset
    • wc_additional_variation_images_frontend_on_reset_done
    • wc_additional_variation_images_frontend_image_swap_callback
    • wc_additional_variation_images_frontend_image_swap_done_callback
    • wc_additional_variation_images_frontend_ajax_default_image_swap_callback
    • wc_additional_variation_images_frontend_ajax_default_image_swap_done_callback
    • wc_additional_variation_images_frontend_reset_variation
    • wc_additional_variation_images_frontend_ajax_response_callback

    The following events are still triggered in the new version:

    • wc_additional_variation_images_frontend_lightbox
    • wc_additional_variation_images_frontend_lightbox_done
    • wc_additional_variation_images_frontend_before_show_variation
    • wc_additional_variation_images_frontend_init

    However, please note that these events were previously passed:

    • the gallery div class name
    • the main images div class name
    • the original gallery HTML
    • the original main images HTML

    Since the gallery HTML is no longer manipulated, these values are no longer passed to the events.

    To predict the impact of these changes we searched across https://wpdirectory.net/ and found no usage in plugins or themes of these events. GitHub revealed only a few instances of usage in themes, however, we noticed that these themes were also manipulating gallery HTML which is broken anyway, so since these events are no longer fired, the impact should be negligible.


  • A new version of WooCommerce Blocks has been released! Version 4.1.0 is now available for download from GitHub and WordPress.org.

    This release introduces full compatibility with WordPress 5.6, validation for Checkout block (client and server-side) and a bunch of bug fixes. Thanks again to all of you who are using the new blocks and reporting things you’d like improved!

    Address Validation in Checkout

    Previous versions included client side validation for checkout input, this release takes it one step further and introduced more validation in the client side, and full validation in the backend.

    WordPress 5.6 Compatibility

    With WordPress 5.6 out, we ensured that all of our blocks are compatible with it, fixing any deprecation notices in our way.

    Changelog

    Enhancements

    • Add the ability to directly upload an image in Featured Category and Featured Product blocks. (3579)
    • Fix coupon code button height not adapting to the font size. (3575)
    • Fixed Coupon Code panel not expanding/contracting in some themes. (3569)
    • Fix: Added fallback styling for screen reader text. (3557)

    Bug Fixes

    • Fix nonce issues when adding product to cart from All Products. (3598)
    • Fix bug inside Product Search in the editor. (3578)
    • Fix console warnings in WordPress 5.6. (3577)
    • Fixed text visibility in select inputs when using Twenty Twenty-One theme’s dark mode. (3554)
    • Fix product list images skewed in Widgets editor. (3553)
    • Correctly validate fields containing white space on the checkout.
    • Add address validation to values posted to the Checkout via StoreApi. (3552)
    • Fix Fees not visible in Cart & Checkout blocks when order doesn’t need shipping. (3521)

    compatibility

    • Fix All Products block edit screen. (3547)

    wp dependency

    • Bumped the minimum WP required version to 5.4. (3537)
    • Removed compatibility with packages in WordPress 5.3. (3541)

  • WooCommerce 4.9.0 is now available for beta testing! You can either download it directly from WordPress.org or install our WooCommerce Beta Tester Plugin.

    What’s new?

    This is a minor release focussing on bug fixes and performance improvements. Just like other minor releases, this release also aims to be backward compatible with previous WooCommerce releases.

    We have also updated WooCommerce Blocks to 4.0.0 and WooCommerce Admin to 1.8.1 containing several bug fixes and enhancements.

    Highlights

    1. WooCommerce Blocks 4.0.0: Blocks package have been updated to 4.0.0, taking it at par with the feature plugin version. Please take a look at the release post to see what’s new and improved.
    2. WooCommerce Admin 1.8.1: WooCommerce Admin package has also been updated to 1.8.1 with this release of WooCommerce. This new package contains lots of bug fixes and stability improvements.
    3. API performance improvements: WooCommerce REST API responses have been made faster by up to 4x for product and order list endpoints. To make use of increased speed, make sure to add the _fields parameter in the API call to specify only what you need, and WooCommerce will optimize internal SQL queries to reduce the load on the database. We are planning to expand this improvement over other endpoints as well if there are good results. #27335
    4. Britain and Isle of Man removed from EU VAT zones: As apart of the Brexit effort, we have removed Britain and IM from EU VAT zones but they are still part of European Union countries. If you or your client’s store deal with EU taxes, then make sure to consult your accountant as just this change might not be enough. #28538
    5. Stock management fixes: Fixes have been made to make stock management more robust and prevent duplicate stock reduction. Thanks to all for reporting those issues promptly and in great detail. #28620
    6. Product review count: An issue related to incorrect review count has also been fixed. If you were impacted by this bug, then add/remove a product review manually to correct the review count. We are also working on another fix to update the product review count retro-actively for convenience. Again, thanks to all for reporting this issue promptly and in detail. #28624
    7. Better coupon error messages: When coupon usage limit is reached after an incomplete or failed payment where the coupon was used, we will show better error messages. If the users are logged in, we will ask them to go to MyAccount page (if enabled) to cancel or pay for the orders and recover/utilize the coupon. #28592

    Filters and actions

    We have added two new actions in this release

    ActionDescription
    woocommerce_variation_before_set_stockAction to signal that the value of ‘stock_quantity’ for a variation is about to change. #27558
    woocommerce_product_before_set_stockAction to signal that the value of ‘stock_quantity’ for a product is about to change.#27558
    list of new actions in 4.9

    Database Changes

    This release does not introduce any changes to the database.

    Template changes

    This release does not introduce any changes to templates.

    Release Schedule

    This version of WooCommerce is scheduled to be released as follows:

    VersionRelease
    BetaDecember 22th, 2020
    Release CandidateDecember 29th, 2020
    4.9 Final ReleaseJanuary 12th, 2021
    Release schedule for 4.9

    Testing

    As with the previous several releases, we have published testing instructions for 4.9. We’d love your help in testing this release.

    If you discover any bugs during the testing process, please let us know by logging a report in GitHub.


  • Today we have released Storefront 3.0.0. The new version can be downloaded from WordPress.org and GitHub.

    The highlight of this release is the removal of our big admin notice presented to the user after the installation of the Storefront theme. This was triggered by the changes done to the WooCommerce admin home section and onboarding procedure. The old notice was interfering with the new flow and design. The documentation was updated so you can check the new onboarding location and welcome message in the Storefront and WooCommerce section. This update is available on the combination of WooCommerce 4.8+ with Storefront 3.0.0+ to preserve backwards compatibility.

    Full changelog:

    • Enhancement – Add missing link text on cart button in handheld footer bar #1205
    • Enhancement – Move Storefront admin notice content to the Storefront Appearance page.#1544
    • Fix – Implode parameters order compatibility for PHP8 #1553
    • Dev – Update various dependencies, including major updates:
      • @wordpress/env to v2 #1459
      • autoprefixer to v10.0.4 #1548
      • puppeteer to v5 #1410
      • grunt-contrib-uglify to v5 #1426
      • bourbon to v7 #1388

    Download the latest release of Storefront from WordPress.org, or venture over to Dashboard → Updates in your WordPress admin to update your theme.

    As usual, if you see any issues, please log them in detail on Github.


  • We’re excited to announce that WooCommerce 4.8 is now publicly available! It has been in development since November 2020 and Core contributions include about 257 commits from 29 contributors!

    This is a minor release, which means everything is backward compatible with the previous version.

    Given the release of PHP8, WordPress 5.6, and the Twenty Twenty-One theme, the focus of this release is on compatibility and quality of life improvements.

    As always, we recommend creating a backup of your site and making sure that themes and plugins are compatible before updating. You can check out this update guide for more information.

    What’s new in 4.8?

    Variations Report

    Example of the variation report

    This new report grants merchants insight into the sales of individual product variations. (#5167)

    Homescreen Layouts

    Merchants may now choose between two different layouts for the homescreen. (#5429)

    Notable Fixes & Improvements

    There are many fixes and stability improvements in this release:

    • Limited the status page’s warning for untested extensions to major releases. (#28114)
    • Added support for the Twenty Twenty-One theme. (#28134)
    • Reduced the memory usage of AJAX product search. (#28177)
    • Added shipping, tax, and fee lines to refund REST API responses. (#28241)

    You can find the complete changelog for this release in the changelog.txt file.

    Database Changes

    This release does not introduce any changes to the database.

    Template Changes

    This release does not introduce any changes to template files.

    Filters and actions

    We have added one new filter:

    FiltersDescription
    woocommerce_product_has_optionsDetermine if the product has options for the user to configure.

    Much 💜 to all the contributors

    Finally a big thanks to everyone in the community who has contributed via issue reports, fixestranslation, testing, supporting other users or simply spreading the word.

    WooCommerce core

    jonathansadowski ObliviousHarmony vedanshujain rodrigoprimo Konamiman roykho
    jonathansadowski ObliviousHarmony vedanshujain rodrigoprimo Konamiman roykho
    claudiosanches kloon rrennick tammullen aheckler bordoni
    claudiosanches kloon rrennick tammullen aheckler bordoni
    szepeviktor timmyc tyrann0us pjv OlegApanovich zzap
    szepeviktor timmyc tyrann0us pjv OlegApanovich zzap
    nerrad mathiasdb peterfabian jeffikus CHEWX
    nerrad mathiasdb peterfabian jeffikus CHEWX

    WooCommerce Admin

    psealock joshuatf jeffstieler louwie17 becdetat moon0326
    psealock joshuatf jeffstieler louwie17 becdetat moon0326
    samueljseay octaedro mattsherman joelclimbsthings adrianduffell timmyc
    samueljseay octaedro mattsherman joelclimbsthings adrianduffell timmyc
    ilyasfoo elizaan36 vbelolapotkov tomalec chickenn00dle dechov
    ilyasfoo elizaan36 vbelolapotkov tomalec chickenn00dle dechov
    Aljullu
    Aljullu

    WooCommerce Blocks

    Aljullu nerrad mikejolley opr senadir budzanowski
    Aljullu nerrad mikejolley opr senadir budzanowski
    haszari ettoredn
    haszari ettoredn

    Action Scheduler

    Konamiman roykho
    Konamiman roykho

  • A new version of WooCommerce Blocks has been released! Version 4.0.0 is now available for download from GitHub and WordPress.org.

    This release includes some fixes for the Cart and Checkout blocks, and the Store API which powers them. Thanks again to all of you who are using the new blocks and reporting things you’d like improved!

    We’re actively working on addressing issues and also integrating more extensions; some of the more technical changes in this release are there to support these efforts.

    Changes to Order Processing within the Checkout Block

    Some of the largest changes in this release are behind the scenes in the Store API. We made some changes so that the order in which data is processed on the checkout endpoint is done in a more logical order, so that orders are not left with the wrong state if Checkout is aborted.

    The new order of events is as follows:

    1. Obtain Draft Order
    2. Process Request
    3. Process Customer
    4. Validate Order
    5. Process Payment

    Whilst these changes should not impact developers, they should make our Checkout endpoint more robust. For example, if an item is out of stock, a pending order will no longer be created.

    User Creation During Checkout

    Along the same lines as the issue above, we found some flaws in the customer creation logic during Checkout, specifically with the security “nonce”. When a user is logged in, these change, which would mean follow up API requests would fail with an error.

    To resolve this, we now return an updated nonce along with the error response, and ensure that when a customer account is created, the Checkout state is updated to reflect this (for example, the create account checkbox is hidden).

    Changelog

    Enhancements

    • Dev: Change register_endpoint_data to use an array of params instead of individual params. (3478)
    • Dev: Expose store/cart via ExtendRestApi to extensions. (3445)
    • Dev: Added formatting classes to the Store API for extensions to consume.

    Bug Fixes

    • Checkout Block: Prevent Create an account from creating up a user account if the order fails coupon validation. (3423)
    • Make sure cart is initialized before the CartItems route is used in the Store API. (3488)
    • Fix notice close button color in Twenty Twenty One dark mode. (3472)
    • Remove held stock for a draft order if an item is removed from the cart. (3468)
    • Ensure correct alignment of Checkout notice’s dismiss button. (3455)
    • Fixed a bug in Checkout Block (Store API) causing Checkout to fail when using an invalid coupon and creating an account.
    • Checkout Block: Correctly handle cases where the order fails with an error (e.g. invalid coupon) and a new user account is created. (3429)
    • Dev: Refactored and reordered Store API Checkout processing to handle various edge cases and better support future extensibility. (3454)

  • We’ve got a second release candidate for you today! We are still on track for our planned December 8th release date.

    Changes

    This release candidate includes additional fixes for the Twenty Twenty-One theme.

    Testing

    If you’d like to dive in and help test this new release, our handy WooCommerce Beta Tester plugin allows you to switch between beta versions and release candidates. You can also download the release from wordpress.org.

    A set of testing instructions has been published on our Wiki page in GitHub. We’ve also posted a helpful writeup on beta testing to help get you started.

    If you discover any bugs during the testing process, please let us know by logging a report in GitHub.

    Thanks to all of our testers and contributors!


  • A new version of WooCommerce Blocks has been released! Version 3.9.0 is now available for download from GitHub and WordPress.org.

    This release includes a number of fixes for the Cart and Checkout blocks. Thanks again to all of you who are using the new blocks and reporting things you’d like improved! We’re actively working on addressing issues and also integrating more extensions.

    There are three changes in particular to highlight:

    Fix broken Express Payment method in Cart

    We discovered a bug with the functionality of the express payment methods in the Cart (Chrome/Google Pay, Apple Pay). Note – this did not affect their usage in the Checkout.

    With the bug, a shopper could initiate the express payment process from the Cart, but completing it would result in an error in the express payment method modal. No payment would be collected, and no order would be created.

    With this fix, express payment methods used from the Cart now work as expected.

    Cart and checkout now respect the global “Hide shipping costs until an address is entered” setting

    In the cart and checkout blocks there were some discrepancies that could exist because the block level setting for hiding shipping costs until an address is entered was disconnected from the global setting.

    Unfortunately, due to the way the global setting is coupled to a large amount of logic in WooCommerce core we had to remove the local block level setting and switch to always using the global setting.

    This fixes a number of bugs related to calculating totals and what was displayed to the shopper for shipping costs.

    It is our intent to move the settings to be more in context with what they affect, but in this case, there’s some changes needed more holistically in WooCommerce core before we can do so.

    Change to payment methods registration interface

    There has been change to the payment method interface for registering payment methods for use in the checkout block.

    Previously these APIs received a callback creator function, for example:

    const bankTransferPaymentMethod = {
    	name: PAYMENT_METHOD_NAME,
    	label: <Label />,
    	content: <Content />,
    	edit: <Content />,
    	icons: null,
    	canMakePayment: () => true,
    	ariaLabel: label,
    };
    // Old interface
    registerPaymentMethod( 
        ( Config ) => new Config( bankTransferPaymentMethod )
    );

    The new interface simply receives the options object:

    // New interface
    registerPaymentMethod( bankTransferPaymentMethod );

    This is a backward compatible change (registerPaymentMethod will still accept and work with both types of arguments) but you will see a deprecated warning for implementation with the old argument type. If you’ve integrated payment methods with the blocks, please do switch to the new interface when you’re able, we don’t anticipate doing a hard deprecation for a while yet (and will give plenty of heads up if/when we do).

    Changelog

    Enhancements

    • Expose discount_type in Store API coupon endpoints. (3399)
    • Exclude checkout-draft orders from WC Admin reports and My Account > Orders. (3379)

    Bugfixes

    • Hide spinner on cart block’s “Proceed to Checkout” link when page unloads. (3436)
    • Fixed express payment methods processing not completing when Stripe payment method active. (3432)
    • Refresh PaymentRequest after cancelling payment to prevent addresses remaining populated on repeat attempts. (3430)
    • Ensure “Add a note to your order” section is styled correctly when disabled. (3427)
    • Prevent checkout step heading text overlapping actual heading on small viewports. (3425)
    • Improve Stripe payment request API payment method availability. (3424)
    • Stop hidden products from being linked in cart and checkout blocks. (3415)
    • Show Express Payment Method Error Notices after Payment Failure. (3410)
    • Fix cart block isLarge console error in the editor when running WordPress 5.6 beta. (3408)
    • Fix: Orders not being placed when paying with an Express payment method from the Cart block. (3403)
    • Fix incorrect usage of static method in Stripe payment method integration. (3400)
    • Cart and checkout should respect the global “Hide shipping costs until an address is entered” setting. (3383)
    • Sync shipping address with billing address when shipping address fields are disabled. This fixes a bug where taxes would not reflect changes in billing address when they are set to be calculated from billing address (3358)

    Refactor

    Support a plain js configuration argument to payment method registration APIs. (3404)


  • We’re very excited to announce that the release candidate is now available! We are on track for our planned December 8th release date!

    Changes

    This release candidate includes some fixes in WooCommerce Admin as well as support for the Twenty Twenty-One Theme.

    Testing

    If you’d like to dive in and help test this new release, our handy WooCommerce Beta Tester plugin allows you to switch between beta versions and release candidates. You can also download the release from wordpress.org.

    A set of testing instructions has been published on our Wiki page in GitHub. We’ve also posted a helpful writeup on beta testing to help get you started.

    If you discover any bugs during the testing process, please let us know by logging a report in GitHub.

    Thanks to all of our testers and contributors!


  • This release introduces several small compatibility improvements and fixes for taxonomy templates changed in WooCommerce 4.7. Also, based on user feedback, we decided to introduce a fix to prevent variations without attributes from being added to the cart that was originally planned for 4.8.0.

    Here is the WooCommerce 4.7.1 changelog:

    • Prevent variable product to be added to cart until a valid variation is selected first. #28103
    • Restored support for custom taxonomy-product_cat-<SLUG>.php and taxonomy-product_tag-<SLUG>.php templates. #28377
    • Display overrides of taxonomy-product_<cat|tag>.php and content-product_cat.php templates in Status page. #28378
    • Apply woocommerce_cart_needs_payment filter in WC_Checkout::process_checkout() to make backwards compatible. #28281

    Thanks to everyone for reporting these issues promptly and helping out with the fix release.

    You can download the latest release of WooCommerce here or visit Dashboard → Updates to update the plugin from your WordPress admin screen.

    As usual, if you spot issues in WooCommerce core, please log them in detail on GitHub. Found a security issue? Please submit a report via HackerOne.