diff --git a/plugins/woocommerce/changelog/add-order_cache b/plugins/woocommerce/changelog/add-order_cache
new file mode 100644
index 00000000000..1b800aff214
--- /dev/null
+++ b/plugins/woocommerce/changelog/add-order_cache
@@ -0,0 +1,4 @@
+Significance: minor
+Type: add
+
+Add a cache for orders, to use when custom order tables are enabled
diff --git a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php
index 74069a01f2d..cc899b5bb8a 100644
--- a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php
+++ b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php
@@ -10,9 +10,11 @@
* @package WooCommerce\Classes
*/
+use Automattic\WooCommerce\Caches\OrderCache;
use Automattic\WooCommerce\Proxies\LegacyProxy;
use Automattic\WooCommerce\Utilities\ArrayUtil;
use Automattic\WooCommerce\Utilities\NumberUtil;
+use Automattic\WooCommerce\Utilities\OrderUtil;
defined( 'ABSPATH' ) || exit;
@@ -203,6 +205,11 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
$this->save_items();
+ if ( OrderUtil::orders_cache_usage_is_enabled() ) {
+ $order_cache = wc_get_container()->get( OrderCache::class );
+ $order_cache->update_if_cached( $this );
+ }
+
/**
* Trigger action after saving to the DB.
*
diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-settings.php b/plugins/woocommerce/includes/admin/class-wc-admin-settings.php
index 329a6a0d79e..5004f51c9c3 100644
--- a/plugins/woocommerce/includes/admin/class-wc-admin-settings.php
+++ b/plugins/woocommerce/includes/admin/class-wc-admin-settings.php
@@ -488,6 +488,8 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
$visibility_class[] = 'show_options_if_checked';
}
+ $must_disable = ArrayUtil::get_value_or_default( $value, 'disabled', false );
+
if ( ! isset( $value['checkboxgroup'] ) || 'start' === $value['checkboxgroup'] ) {
?>
@@ -510,6 +512,7 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
?>