WooCommerce 6.4 Beta 1

Beta 1 for the April 2022 release of WooCommerce is now available for testing! You can either download it directly from WordPress.org or install our WooCommerce Beta Tester Plugin.

Highlights

For all of the changes in this release, see the full changelog.

Actions and Filters

This release adds two new filters.

FilterDescription
woocommerce_admin_order_should_render_refundsDetermines whether the refund UI should be rendered in the order editor.
woocommerce_refund_restock_noteDetermines whether or not an order note is added when a refund restocks an item.

Database Changes

This release contains two database changes.

  • Added rate_limit_remaining column to wc_rate_limits table.
  • Added primary key to wc_product_attributes_lookup table.

Template Changes

There are no template changes in this release.

Deprecations

There are no deprecations in this release.

Release Schedule

VersionRelease
BetaMarch 22nd, 2022
Release CandidateMarch 29th, 2022
Final ReleaseApril 12th, 2022

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.


12 responses to “WooCommerce 6.4 Beta 1”

  1. Mandatory questions:
    1. How does one know if the custom tables are being used, via code?
    2. How does one query the data from the custom table, using SQL? For example, to fetch some custom meta.
    3. Will the legacy reports, currently being flagged as deprecated, support the new custom order tables?

    1. vedjain Avatar

      Hey,

      Custom tables are currently disabled completely since the implementation is still in progress. It will be at least a few releases before they are ready.

      You will see some code related to custom tables in releases though because we would merge small pieces of code as they are implemented but they will be disabled behind a feature flag till the entire implementation is complete.

      I would also recommend not creating tables manually at this point and waiting for the release when they are finally enabled, as the structure of the table is likely to change. We will publish posts and send out info when they are enabled.

      Regarding your questions:

      How does one know if the custom tables are being used, via code?

      We plan to add a global function that will tell regarding what tables are being used once the implementation is towards completion.

      How does one query the data from the custom table, using SQL? For example, to fetch some custom meta.

      When they are enabled, you can query custom tables via order data store classes. We plan to document this functionality before they are released in a future version.

      Will the legacy reports, currently being flagged as deprecated, support the new custom order tables?

      At this point, we do not plan to support legacy reports. However, we will plan to discuss this again with everyone when we are closer to completing the implementation.

      1. Thanks for the answers. There’s still a question open, though, about querying the tables. I indicated “How does one query the data from the custom table, using SQL?” specifically because I have the need to do that, without using DataStore classes.

        For example, I have to extend the reports (legacy and analytics) by adding explicit JOINs or WHERE clauses to the queries they used. See here: https://developer.woo.com/2020/02/20/extending-wc-admin-reports/, search for “Lets start by adding a JOIN for the orders table, orders stats, and orders chart.” I have to do something like that, to fetch specific order meta, therefore I will need to know where it’s stored and how to fetch it by using a query.

        Pre-emptive answer: I’m aware that accessing the data directly has the drawback of a tighter coupling with the data layer, and I’m already organised to handle any changes that might come up in the future. Read: let me worry about that. 😄

        Speaking of order meta, I read about a synchronisation logic. How is that going to work? Is it going to be monodirectional, i.e. from post_meta to custom tables, or bidirectional, i.e. the custom tables will also update the post meta?

        1. vedjain Avatar

          Well, if you are comfortable with accessing data directly, you can do so using the global $wpdb object. It allows running arbitrary SQL queries as needed.

          I read about synchronization logic. How is that going to work?

          I added some details about migration logic here https://github.com/woocommerce/woocommerce/issues/31599#issuecomment-1025803858, but the gist is, initially we will sync to both wp_posts and custom tables. This will of course come with a performance penalty, but it is important in the start to allow merchants to instantly switch back (with having to wait for any backfill to complete) to the wp_post table if there is a bug, an extension they are using is not compatible, etc.

          We will then allow merchants to disable this sync to the wp_post table when they are comfortable.

          1. Thanks for the information. The two way sync will indeed introduce some performance penalty, but it will be a great way to allow merchants to run their sites smoothly while the developers complete the testing and bring the extensions up to speed.

            In relation to the SQL, I know how to run them, I’ve been a developer for more than two decades. 😄 My question was about the WHERE to find the data. For example, now I can find the order meta in the wp_meta table. Where can I find it, in the custom tables?

        2. vedjain Avatar

          My question was about the WHERE to find the data.

          Right, sorry. So we would be migrating some of the metadata into core fields in 3 different tables:
          1. wc_orders
          2. wc_order_addresses
          3. wc_order_operational_data

          and then there would be one more table (that I think you are looking for) which will have all the metadata that is not part of the core table
          1. wc_order_meta

          So basically, all the current order meta-data would be on one of the above tables.

  2. Lee Willis Avatar
    Lee Willis

    Please can the release be tagged in git for those of us using git repos. At the minute the latest tag is 6.3.1

    1. Sorry for the late reply here. That release was tagged shortly after this post (somehow that was missed during the build process), although hopefully you found it/are running something more recent now! https://github.com/woocommerce/woocommerce/releases/tag/6.4.0-beta.1

  3. Please could you tag the release on GitHub for those of us testing against WooCommerce from version control

    1. Christopher Allford Avatar
      Christopher Allford

      Hello,

      I’ve gone ahead and created a GitHub release. We’re going to need to make some changes around this since the tag now contains the entire monorepo!

  4. Edward Wilson Avatar
    Edward Wilson

    Is it possible to “downgrade” from the Beta to the current release of woocommerce. I hate the new format.

    1. Hello Edward, you can reinstall a previous version, use betas only for testing before an actual release.

Leave a Reply

Your email address will not be published. Required fields are marked *