From d7ccebc0048acd6250b113b714b1fa857b87ed00 Mon Sep 17 00:00:00 2001 From: RJ <27843274+rjchow@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:44:28 +0800 Subject: [PATCH] fix: add check for wp_get_current_user() before calling it (#51302) * fix: add check for wp_get_current_user() before calling it * changelog * changed try catch to catch throwable --- .../changelog/fix-remote-logger-undefined-wp-current-user | 4 ++++ plugins/woocommerce/src/Internal/Logging/RemoteLogger.php | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-remote-logger-undefined-wp-current-user diff --git a/plugins/woocommerce/changelog/fix-remote-logger-undefined-wp-current-user b/plugins/woocommerce/changelog/fix-remote-logger-undefined-wp-current-user new file mode 100644 index 00000000000..be10eb2ec34 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-remote-logger-undefined-wp-current-user @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Adds a function_exists() check so that we don't add a secondary fatal in remote logging if wp_get_current_user does not exist yet diff --git a/plugins/woocommerce/src/Internal/Logging/RemoteLogger.php b/plugins/woocommerce/src/Internal/Logging/RemoteLogger.php index 3043cd110fe..a15792fb29b 100644 --- a/plugins/woocommerce/src/Internal/Logging/RemoteLogger.php +++ b/plugins/woocommerce/src/Internal/Logging/RemoteLogger.php @@ -88,7 +88,7 @@ class RemoteLogger extends \WC_Log_Handler { unset( $context['tags'] ); } - if ( class_exists( '\WC_Tracks' ) ) { + if ( class_exists( '\WC_Tracks' ) && function_exists( 'wp_get_current_user' ) ) { $user = wp_get_current_user(); $blog_details = \WC_Tracks::get_blog_details( $user->ID ); @@ -233,7 +233,7 @@ class RemoteLogger extends \WC_Log_Handler { } return true; - } catch ( \Exception $e ) { + } catch ( \Throwable $e ) { // Log the error locally if the remote logging fails. error_log( 'Remote logging failed: ' . $e->getMessage() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log return false;