Categories
WooCommerce Core

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.

10 replies on “WooCommerce 6.4 Beta 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?

Like

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.

Like

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.woocommerce.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?

Like

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.

Like

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?

Liked by 1 person

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.

Liked by 1 person

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!

Liked by 1 person

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

Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.