From 72cd1b2a270c18f6e84dd6d6fa4aadf67969be44 Mon Sep 17 00:00:00 2001 From: Adnan Haque <3737780+haqadn@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:17:04 +0100 Subject: [PATCH] Boost: Prioritize cornerstone provider while serving critical CSS (#40021) --- .../lib/critical-css/source-providers/Source_Providers.php | 6 +++++- .../source-providers/providers/Cornerstone_Provider.php | 6 ++++++ .../boost/app/modules/optimizations/cloud-css/Cloud_CSS.php | 4 ++++ .../app/modules/optimizations/critical-css/Critical_CSS.php | 4 ++++ .../boost/changelog/fix-ccss-cornerstone-provider-priority | 5 +++++ 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 projects/plugins/boost/changelog/fix-ccss-cornerstone-provider-priority diff --git a/projects/plugins/boost/app/lib/critical-css/source-providers/Source_Providers.php b/projects/plugins/boost/app/lib/critical-css/source-providers/Source_Providers.php index d840760796146..2bed79fb816ef 100644 --- a/projects/plugins/boost/app/lib/critical-css/source-providers/Source_Providers.php +++ b/projects/plugins/boost/app/lib/critical-css/source-providers/Source_Providers.php @@ -38,12 +38,12 @@ class Source_Providers { * @var Provider[] */ protected $providers = array( + Cornerstone_Provider::class, Post_ID_Provider::class, WP_Core_Provider::class, Singular_Post_Provider::class, Archive_Provider::class, Taxonomy_Provider::class, - Cornerstone_Provider::class, ); public function get_providers() { @@ -110,6 +110,10 @@ public function get_current_request_css() { return $this->request_cached_css; } + public function get_current_critical_css_key() { + return $this->current_critical_css_key; + } + /** * Get providers sources. * diff --git a/projects/plugins/boost/app/lib/critical-css/source-providers/providers/Cornerstone_Provider.php b/projects/plugins/boost/app/lib/critical-css/source-providers/providers/Cornerstone_Provider.php index bb3fcbdb02c4e..5c1f71541cdf8 100644 --- a/projects/plugins/boost/app/lib/critical-css/source-providers/providers/Cornerstone_Provider.php +++ b/projects/plugins/boost/app/lib/critical-css/source-providers/providers/Cornerstone_Provider.php @@ -77,6 +77,12 @@ public static function get_keys() { * @inheritdoc */ public static function get_hash_for_url( $url ) { + // Remove the home_url from the beginning of the URL. + $home_url = home_url(); + if ( stripos( $url, $home_url ) === 0 ) { + $url = substr( $url, strlen( $home_url ) ); + } + $hash = hash( 'md5', $url ); return substr( $hash, 0, 8 ); diff --git a/projects/plugins/boost/app/modules/optimizations/cloud-css/Cloud_CSS.php b/projects/plugins/boost/app/modules/optimizations/cloud-css/Cloud_CSS.php index 64db2088cc0c4..9a06999349920 100644 --- a/projects/plugins/boost/app/modules/optimizations/cloud-css/Cloud_CSS.php +++ b/projects/plugins/boost/app/modules/optimizations/cloud-css/Cloud_CSS.php @@ -117,6 +117,10 @@ public function display_critical_css() { return; } + if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) { + $critical_css = "/* Critical CSS Key: {$this->paths->get_current_critical_css_key()} */\n" . $critical_css; + } + $display = new Display_Critical_CSS( $critical_css ); add_action( 'wp_head', array( $display, 'display_critical_css' ), 0 ); add_filter( 'style_loader_tag', array( $display, 'asynchronize_stylesheets' ), 10, 4 ); diff --git a/projects/plugins/boost/app/modules/optimizations/critical-css/Critical_CSS.php b/projects/plugins/boost/app/modules/optimizations/critical-css/Critical_CSS.php index 032d246f6c1da..7ab69c1b357aa 100644 --- a/projects/plugins/boost/app/modules/optimizations/critical-css/Critical_CSS.php +++ b/projects/plugins/boost/app/modules/optimizations/critical-css/Critical_CSS.php @@ -94,6 +94,10 @@ public function display_critical_css() { return; } + if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) { + $critical_css = "/* Critical CSS Key: {$this->paths->get_current_critical_css_key()} */\n" . $critical_css; + } + $display = new Display_Critical_CSS( $critical_css ); add_action( 'wp_head', array( $display, 'display_critical_css' ), 0 ); add_filter( 'style_loader_tag', array( $display, 'asynchronize_stylesheets' ), 10, 4 ); diff --git a/projects/plugins/boost/changelog/fix-ccss-cornerstone-provider-priority b/projects/plugins/boost/changelog/fix-ccss-cornerstone-provider-priority new file mode 100644 index 0000000000000..b556e34ff7d54 --- /dev/null +++ b/projects/plugins/boost/changelog/fix-ccss-cornerstone-provider-priority @@ -0,0 +1,5 @@ +Significance: patch +Type: changed +Comment: Change to an unreleased feature + +