PluginProbe
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN / 1.3.4
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN v1.3.4
1.3.4 1.3.3 1.3.2 1.3.1 1.3.0 1.2.4 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 All 30 releases
← All changes | includes/class-asset-combiner.php +12 -0 1.2.41.3.4 View file →
@@ -634,8 +634,20 @@
634 634 // to run at their original spot).
635 635 if ( ! empty( $reg->extra['after'] ) || ! empty( $reg->extra['before'] ) || ! empty( $reg->extra['data'] ) ) {
636 636 return null;
637 637 }
638 + // A handle the user protected from defer/delay, or one Defer JS
639 + // auto-protects because inline code reads it, must not be absorbed
640 + // either. Combining moves the code into a bundle printed under a
641 + // DIFFERENT handle, so the exclusion the user wrote — matched by
642 + // handle or URL — stops matching anything and the protection is
643 + // silently gone. jquery-core is the case that bites: the check above
644 + // only catches a handle carrying its OWN inline data, while a
645 + // dependency of an inline consumer carries none, so it lands in the
646 + // bundle and the exclusion list reads as if it were still honoured.
647 + if ( \XSpeed\Minify_Filters::is_protected_from_bundling( $handle, $src ) ) {
648 + return null;
649 + }
638 650 // Skip async / defer-via-strategy.
639 651 $strategy = $reg->extra['strategy'] ?? '';
640 652 if ( 'async' === $strategy || 'defer' === $strategy ) {
641 653 return null;