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 ) ) : ?>