{"id":36797,"date":"2015-06-05T21:52:46","date_gmt":"2015-06-05T21:52:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/aggregator\/"},"modified":"2026-08-04T22:35:19","modified_gmt":"2026-08-04T22:35:19","slug":"aggregator","status":"closed","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/aggregator\/","author":14172526,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.0","stable_tag":"2.2.0","tested":"7.0.4","requires":"4.8","requires_php":"","requires_plugins":null,"header_name":"Aggregator","header_author":"Palasthotel <rezeption@palasthotel.de> (Edward Bock)","header_description":"","assets_banners_color":"","last_updated":"2026-08-04 22:35:19","external_support_url":"","external_repository_url":"","donate_link":"http:\/\/palasthotel.de\/","header_plugin_uri":"","header_author_uri":"https:\/\/palasthotel.de","rating":0,"author_block_rating":0,"active_installs":10,"downloads":3138,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"EdwardBock","date":"2015-06-05 21:52:46"},"1.0.1":{"tag":"1.0.1","author":"EdwardBock","date":"2015-06-15 14:11:56"},"1.0.2":{"tag":"1.0.2","author":"EdwardBock","date":"2015-06-29 11:29:12"},"1.0.3":{"tag":"1.0.3","author":"EdwardBock","date":"2015-07-16 08:36:44"},"1.0.4":{"tag":"1.0.4","author":"EdwardBock","date":"2015-07-17 09:54:27"},"1.0.5":{"tag":"1.0.5","author":"EdwardBock","date":"2015-07-17 10:04:26"},"1.0.6":{"tag":"1.0.6","author":"EdwardBock","date":"2015-07-21 13:01:57"},"1.0.7":{"tag":"1.0.7","author":"EdwardBock","date":"2015-08-11 08:55:09"},"1.0.8":{"tag":"1.0.8","author":"EdwardBock","date":"2015-09-28 11:37:36"},"1.1":{"tag":"1.1","author":"EdwardBock","date":"2015-10-19 11:46:11"},"1.1.1":{"tag":"1.1.1","author":"EdwardBock","date":"2015-10-19 12:49:13"},"1.1.2":{"tag":"1.1.2","author":"EdwardBock","date":"2015-10-19 13:43:42"},"1.1.3":{"tag":"1.1.3","author":"EdwardBock","date":"2016-07-13 11:14:20"},"1.1.4":{"tag":"1.1.4","author":"EdwardBock","date":"2017-03-16 12:19:29"},"2.0":{"tag":"2.0","author":"EdwardBock","date":"2017-04-19 14:39:12"},"2.0.1":{"tag":"2.0.1","author":"EdwardBock","date":"2017-04-20 06:17:57"},"2.0.2":{"tag":"2.0.2","author":"greatestview","date":"2017-04-24 14:01:48"},"2.0.3":{"tag":"2.0.3","author":"EdwardBock","date":"2017-05-31 18:43:34"},"2.0.4":{"tag":"2.0.4","author":"EdwardBock","date":"2017-06-29 12:48:09"},"2.1":{"tag":"2.1","author":"EdwardBock","date":"2017-07-04 07:50:22"},"2.1.1":{"tag":"2.1.1","author":"EdwardBock","date":"2019-07-31 17:11:24"},"2.1.2":{"tag":"2.1.2","author":"EdwardBock","date":"2019-12-04 14:20:17"},"2.2.0":{"tag":"2.2.0","author":"palasthotel","date":"2026-08-04 22:35:19"}},"upgrade_notice":{"2.2.0":"<p>End of life: this plugin is no longer maintained - please deactivate and delete it. On WordPress 6.3 and newer it drops every script added with wp_add_inline_script() and loses defer\/async, so pages can be missing script configuration. Nothing needs to replace it; over HTTP\/2 the individual files are fine.<\/p>","2.0.3":"<ul>\n<li>you will have to reactivate the plugin because main php file was renamed in version 2.0.3<\/li>\n<\/ul>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.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.1","1.1.1","1.1.2","1.1.3","1.1.4","2.0","2.0.1","2.0.2","2.0.3","2.0.4","2.1","2.1.1","2.1.2","2.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5636,229,186],"plugin_category":[55,59],"plugin_contributors":[85158,274076,138992],"plugin_business_model":[],"class_list":["post-36797","plugin","type-plugin","status-closed","hentry","plugin_tags-aggregator","plugin_tags-javascript","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_category-utilities-and-tools","plugin_contributors-edwardbock","plugin_contributors-janaeggebrecht","plugin_contributors-palasthotel","plugin_committers-edwardbock","plugin_committers-greatestview","plugin_committers-palasthotel"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/aggregator.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>This plugin has reached the end of its life and receives no further updates. Please deactivate and delete it.<\/strong><\/p>\n\n<p>It aggregated a site's local JavaScript files into one header and one footer request, back when the number of requests was what made a page slow. That has not been true for years, and on a current WordPress the plugin now does more harm than good.<\/p>\n\n<h4>Why it is being retired<\/h4>\n\n<p><strong>HTTP\/2 removed the reason it existed.<\/strong> Bundling files was a way around HTTP\/1.1, which opened a new connection per file. HTTP\/2 and HTTP\/3 send many files over one connection, so a handful of separate scripts costs next to nothing - while one big bundle has to be re-downloaded in full whenever any part of it changes.<\/p>\n\n<p><strong>WordPress does the job itself now.<\/strong> Since 6.3 a script can be registered with <code>defer<\/code> or <code>async<\/code> (<code>wp_script_add_data( $handle, 'strategy', 'defer' )<\/code>), which is a better answer to blocking scripts than merging them. Since 6.5 there are script modules, a separate registry this plugin never touched at all - so on a modern block theme part of the JavaScript was never aggregated in the first place.<\/p>\n\n<p><strong>And it breaks pages.<\/strong> Measured on WordPress 7.0.2 with version 2.1.2:<\/p>\n\n<ul>\n<li>Anything added with <code>wp_add_inline_script()<\/code> is <strong>silently dropped<\/strong>. Both <code>before<\/code> and <code>after<\/code> code disappear. WordPress itself and a great many plugins pass configuration to their scripts this way, so this can leave a page with script files that never get their settings.<\/li>\n<li><p>A <code>defer<\/code> or <code>async<\/code> strategy is <strong>lost<\/strong>. Scripts that were meant not to block rendering end up inside a bundle that does.<\/p>\n\n<p>wp_localize_script() data survives - the plugin re-renders it itself - which is why the damage is not always obvious.<\/p><\/li>\n<\/ul>\n\n<h4>What to do instead<\/h4>\n\n<p>Deactivate and delete the plugin. Nothing needs to replace it: WordPress serves the individual files again, which is the right thing over HTTP\/2. If single scripts block rendering, register them with a <code>defer<\/code> strategy.<\/p>\n\n<p>The aggregated files the plugin wrote are left behind on purpose so nothing breaks mid-request. They can be deleted afterwards - by default in <code>wp-content\/uploads\/aggregated\/<\/code>, or in your theme directory if that was configured under <strong>Settings \u203a Aggregator<\/strong>.<\/p>\n\n<!--section=installation-->\n<p>Do not install this plugin. It is no longer maintained.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20my%20site%20get%20slower%20without%20it%3F\"><h3>Will my site get slower without it?<\/h3><\/dt>\n<dd><p>Almost certainly not. Over HTTP\/2 the individual files are fetched over the same connection, and they cache separately - so a change to one script no longer invalidates all of them.<\/p><\/dd>\n<dt id=\"is%20there%20a%20successor%3F\"><h3>Is there a successor?<\/h3><\/dt>\n<dd><p>No, and none is planned. What this plugin did is either unnecessary now or better handled by WordPress itself.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>This plugin is no longer maintained. Please deactivate and delete it. See the description for why, and for what to do instead.<\/li>\n<li>No code changes: the behaviour of 2.1.2 is unchanged, so nothing shifts underneath a site that is still running it.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>PHP 7.3 compatibility update<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>only add aggregated file if not empty<\/li>\n<li>tiny refactorings<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>additional attributes for script tags<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>localize scripts on wp_print_scripts action fix<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>main php file rename<\/li>\n<li>external scripts with https:\/\/ and \/\/ fix aggregation fix<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>typos fixed (hook name and html comments)<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>rerender on javascript content file changes<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>we can handle different aggregation combinations now<\/li>\n<li>scripts need to be rerendered<\/li>\n<li>Hook <code>ph_aggregator_ignore<\/code> is marked as deprecated, please make sure to update your code to use the new hook <code>aggregator_ignore<\/code>, which provides a js handle argument.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>added try catch blocks around each javascript file to prevent script execution after an error<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>wp_enqueue with aggregated files time as version<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>get correct working theme directory<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>default to uploads<\/li>\n<li>theme slug for aggregated scripts<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>aggregated location configuratable<\/li>\n<li>object orientation implemented<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>localization data for aggregated scripts fix<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>dequeue wrong scripts fix<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>new rules<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>aggregated folder in plugin deprecated<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>aggregation to theme directory<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>when to aggregate optimization<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>aggregate to subfolder to prevent deployment issues<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Separate logged in and logged out aggregation<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>First release<\/li>\n<li>aggregates JavaScript files<\/li>\n<\/ul>","raw_excerpt":"This plugin is no longer maintained. Please deactivate and delete it.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/36797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=36797"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/edwardbock"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=36797"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=36797"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=36797"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=36797"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=36797"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=36797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}