From 3665a3fe1a3e0c0fdd11bef37c97d2ded290c6d1 Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 10 Feb 2026 09:07:15 -0500 Subject: [PATCH 1/3] Add a file existence check in `class-wp-theme-json-resolver` to avoid potential errors. --- src/wp-includes/class-wp-theme-json-resolver.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/class-wp-theme-json-resolver.php b/src/wp-includes/class-wp-theme-json-resolver.php index 4d5bf3dce9ee3..20d4a6be5277d 100644 --- a/src/wp-includes/class-wp-theme-json-resolver.php +++ b/src/wp-includes/class-wp-theme-json-resolver.php @@ -106,11 +106,12 @@ protected static function read_json_file( $file_path ) { if ( array_key_exists( $file_path, static::$theme_json_file_cache ) ) { return static::$theme_json_file_cache[ $file_path ]; } - - $decoded_file = wp_json_file_decode( $file_path, array( 'associative' => true ) ); - if ( is_array( $decoded_file ) ) { - static::$theme_json_file_cache[ $file_path ] = $decoded_file; - return static::$theme_json_file_cache[ $file_path ]; + if( file_exists( $file_path ) ) { + $decoded_file = wp_json_file_decode( $file_path, array( 'associative' => true ) ); + if ( is_array( $decoded_file ) ) { + static::$theme_json_file_cache[ $file_path ] = $decoded_file; + return static::$theme_json_file_cache[ $file_path ]; + } } } From 838b1dd5bfd4477d62e3937b233f3ce28ed05c5e Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 10 Feb 2026 14:57:29 -0500 Subject: [PATCH 2/3] Update src/wp-includes/class-wp-theme-json-resolver.php Co-authored-by: Weston Ruter --- src/wp-includes/class-wp-theme-json-resolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-theme-json-resolver.php b/src/wp-includes/class-wp-theme-json-resolver.php index 20d4a6be5277d..a9ae0fefa7064 100644 --- a/src/wp-includes/class-wp-theme-json-resolver.php +++ b/src/wp-includes/class-wp-theme-json-resolver.php @@ -106,7 +106,7 @@ protected static function read_json_file( $file_path ) { if ( array_key_exists( $file_path, static::$theme_json_file_cache ) ) { return static::$theme_json_file_cache[ $file_path ]; } - if( file_exists( $file_path ) ) { + if ( file_exists( $file_path ) ) { $decoded_file = wp_json_file_decode( $file_path, array( 'associative' => true ) ); if ( is_array( $decoded_file ) ) { static::$theme_json_file_cache[ $file_path ] = $decoded_file; From bbd76130534752c438a2df81a07e5698d4e1b017 Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Wed, 18 Feb 2026 13:22:43 -0500 Subject: [PATCH 3/3] Change file existence check to readability check used is_readable not file_exists --- src/wp-includes/class-wp-theme-json-resolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-theme-json-resolver.php b/src/wp-includes/class-wp-theme-json-resolver.php index a9ae0fefa7064..5e9e2334e4e2a 100644 --- a/src/wp-includes/class-wp-theme-json-resolver.php +++ b/src/wp-includes/class-wp-theme-json-resolver.php @@ -106,7 +106,7 @@ protected static function read_json_file( $file_path ) { if ( array_key_exists( $file_path, static::$theme_json_file_cache ) ) { return static::$theme_json_file_cache[ $file_path ]; } - if ( file_exists( $file_path ) ) { + if ( is_readable( $file_path ) ) { $decoded_file = wp_json_file_decode( $file_path, array( 'associative' => true ) ); if ( is_array( $decoded_file ) ) { static::$theme_json_file_cache[ $file_path ] = $decoded_file;