{"id":109785,"date":"2019-10-03T00:21:08","date_gmt":"2019-10-03T00:21:08","guid":{"rendered":"https:\/\/en-au.wordpress.org\/plugins\/wp-css-merge\/"},"modified":"2026-07-27T13:56:34","modified_gmt":"2026-07-27T13:56:34","slug":"wp-css-merge","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/wp-css-merge\/","author":15679171,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.1","stable_tag":"2.0.1","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"WP CSS Merge","header_author":"Digital Apps","header_description":"This is a short description of what the plugin does. It's displayed in the WordPress admin area.","assets_banners_color":"2c70b1","last_updated":"2026-07-27 13:56:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/digitalapps.co\/wordpress-plugins\/wp-css-merge\/","header_author_uri":"https:\/\/digitalapps.co\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1463,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"digitalapps","date":"2026-07-27 13:26:54"},"2.0.1":{"tag":"2.0.1","author":"digitalapps","date":"2026-07-27 13:56:34"}},"upgrade_notice":{"2.0.1":"<p>Keeps WordPress-inlineable styles separate so their dependent stylesheets always render correctly.<\/p>","2.0.0":"<p>The aggregation engine and settings screen have been rebuilt. Existing activation choices are preserved, but old global cache files are no longer used.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":2167263,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":2167386,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3624681,"resolution":"1","location":"assets","locale":"","width":1265,"height":763},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3624681,"resolution":"2","location":"assets","locale":"","width":1280,"height":720}},"screenshots":{"1":"Configure safe CSS bundling, conservative minification, handle exclusions, and generated cache controls.","2":"WP CSS Merge active on the Plugins screen with its direct Settings action and release metadata."}},"plugin_section":[],"plugin_tags":[146,356,187,247],"plugin_category":[52,59],"plugin_contributors":[150144],"plugin_business_model":[],"class_list":["post-109785","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-css","plugin_tags-optimization","plugin_tags-performance","plugin_category-performance","plugin_category-utilities-and-tools","plugin_contributors-digitalapps","plugin_committers-digitalapps"],"banners":{"banner":"https:\/\/ps.w.org\/wp-css-merge\/assets\/banner-772x250.png?rev=2167386","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wp-css-merge\/assets\/icon-256x256.png?rev=2167263","icon_2x":"https:\/\/ps.w.org\/wp-css-merge\/assets\/icon-256x256.png?rev=2167263","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-css-merge\/assets\/screenshot-1.jpg?rev=3624681","caption":"Configure safe CSS bundling, conservative minification, handle exclusions, and generated cache controls."},{"src":"https:\/\/ps.w.org\/wp-css-merge\/assets\/screenshot-2.jpg?rev=3624681","caption":"WP CSS Merge active on the Plugins screen with its direct Settings action and release metadata."}],"raw_content":"<!--section=description-->\n<p>WP CSS Merge reduces compatible frontend stylesheet requests by combining local CSS files into cached bundles.<\/p>\n\n<p>Version 2 uses a safety-first bundle engine:<\/p>\n\n<ul>\n<li>Preserves the dependency and cascade order managed by WordPress.<\/li>\n<li>Creates different bundles for different style sets instead of sharing one global file.<\/li>\n<li>Keeps external, inline, conditional, RTL, unsupported, and excluded styles unchanged.<\/li>\n<li>Rebases relative image and font URLs to their original public locations.<\/li>\n<li>Writes cache files atomically in the current site's uploads directory.<\/li>\n<li>Automatically serves the original stylesheets whenever bundling is unavailable or unsuccessful.<\/li>\n<li>Invalidates bundles when source files, versions, settings, locale, or queued style combinations change.<\/li>\n<li>Supports multisite with a separate cache location for each site.<\/li>\n<\/ul>\n\n<p>The plugin never downloads remote CSS, contacts external services, or sends telemetry.<\/p>\n\n<p>Because HTTP\/2 and HTTP\/3 reduce the cost of multiple requests, combining every stylesheet is not always faster. WP CSS Merge therefore combines only contiguous styles that can be moved safely without changing their behavior.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WP CSS Merge.<\/li>\n<li>Go to Settings &gt; WP CSS Merge.<\/li>\n<li>Enable CSS bundling and save the settings.<\/li>\n<li>Visit the frontend to allow bundles to be generated for the style combinations in use.<\/li>\n<\/ol>\n\n<p>Use the cache status panel to clear generated files after troubleshooting. Cache clearing is normally automatic when settings, themes, plugins, or source styles change.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20on%20the%20first%20request%3F\"><h3>What happens on the first request?<\/h3><\/dt>\n<dd><p>The plugin attempts to build the required bundle before styles are printed. If the file cannot be created and verified, the original stylesheets load unchanged.<\/p><\/dd>\n<dt id=\"why%20are%20some%20stylesheets%20not%20combined%3F\"><h3>Why are some stylesheets not combined?<\/h3><\/dt>\n<dd><p>External stylesheets and styles with inline, conditional, RTL, unsupported at-rule, or different media behavior remain separate to protect rendering and cascade order. Handles listed in the exclusion setting also remain separate.<\/p><\/dd>\n<dt id=\"where%20are%20bundles%20stored%3F\"><h3>Where are bundles stored?<\/h3><\/dt>\n<dd><p>Bundles are stored in a <code>wp-css-merge<\/code> directory inside the current site's WordPress uploads directory. Multisite installations receive separate site-specific directories through the normal uploads API.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20collect%20or%20transmit%20data%3F\"><h3>Does the plugin collect or transmit data?<\/h3><\/dt>\n<dd><p>No. WP CSS Merge performs local filesystem and stylesheet processing only. It does not use external services, telemetry, or tracking.<\/p><\/dd>\n<dt id=\"how%20do%20i%20find%20a%20stylesheet%20handle%20to%20exclude%3F\"><h3>How do I find a stylesheet handle to exclude?<\/h3><\/dt>\n<dd><p>Stylesheet handles are the first argument passed to <code>wp_enqueue_style()<\/code>. A theme or plugin developer can provide the relevant handle when troubleshooting compatibility.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Kept styles with WordPress inline-path metadata outside generated bundles.<\/li>\n<li>Added a WordPress 7 wp-env regression test for inline-style boundaries and automatic fallback.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Replaced the single global CSS file with context-specific, fingerprinted bundles.<\/li>\n<li>Added automatic fallback to original WordPress styles on every generation or validation failure.<\/li>\n<li>Preserved dependency order, media grouping, and unsupported style behavior.<\/li>\n<li>Added safe same-site path resolution and relative asset URL rebasing.<\/li>\n<li>Added atomic cache writes, stale cache cleanup, per-site multisite storage, and cache controls.<\/li>\n<li>Replaced the AJAX toggle and unrelated promotion with accessible native WordPress settings.<\/li>\n<li>Added exclusions, conservative minification, lifecycle cleanup, and current compatibility metadata.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Improved path compatibility across operating systems.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Safely combines compatible local stylesheets into cached bundles while preserving WordPress dependency order and automatic fallbacks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/109785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=109785"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/digitalapps"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=109785"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=109785"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=109785"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=109785"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=109785"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=109785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}