From e3a179ff1ca36b0a854ba2afad811fe3cfbc3b4b Mon Sep 17 00:00:00 2001 From: boblinthorst Date: Thu, 17 Aug 2023 12:26:58 +0200 Subject: [PATCH] Prevent non-WC_Orders on the order received page To ensure they have an implementation of the get_order_key function. Visits to the order_received page with the id of a refund result in a fatal error. --- .../changelog/BL-prevent-non-orders-on-order-received-page | 4 ++++ .../includes/shortcodes/class-wc-shortcode-checkout.php | 2 +- plugins/woocommerce/includes/wc-cart-functions.php | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/BL-prevent-non-orders-on-order-received-page diff --git a/plugins/woocommerce/changelog/BL-prevent-non-orders-on-order-received-page b/plugins/woocommerce/changelog/BL-prevent-non-orders-on-order-received-page new file mode 100644 index 00000000000..d5fa00efe67 --- /dev/null +++ b/plugins/woocommerce/changelog/BL-prevent-non-orders-on-order-received-page @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +No longer fatals on order-received page when provided with the id of a refund diff --git a/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php b/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php index 1915c580ffc..40b94331095 100644 --- a/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php +++ b/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-checkout.php @@ -271,7 +271,7 @@ class WC_Shortcode_Checkout { if ( $order_id > 0 ) { $order = wc_get_order( $order_id ); - if ( ! $order || ! hash_equals( $order->get_order_key(), $order_key ) ) { + if ( ( ! $order instanceof WC_Order ) || ! hash_equals( $order->get_order_key(), $order_key ) ) { $order = false; } } diff --git a/plugins/woocommerce/includes/wc-cart-functions.php b/plugins/woocommerce/includes/wc-cart-functions.php index 94fba81e7fd..cb696746e63 100644 --- a/plugins/woocommerce/includes/wc-cart-functions.php +++ b/plugins/woocommerce/includes/wc-cart-functions.php @@ -176,7 +176,7 @@ function wc_clear_cart_after_payment() { if ( $order_id > 0 ) { $order = wc_get_order( $order_id ); - if ( $order && hash_equals( $order->get_order_key(), $order_key ) ) { + if ( $order instanceof WC_Order && hash_equals( $order->get_order_key(), $order_key ) ) { WC()->cart->empty_cart(); } }