[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fe5rFd0enRjizQNeXHTnzJBf4iYaHUX0JT_o7-QsFmyA":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":32,"crawl_stats":29,"alternatives":39,"analysis":141,"fingerprints":200},"web-worker-offloading","Web Worker Offloading","0.2.1","WordPress Performance Team","https:\u002F\u002Fprofiles.wordpress.org\u002Fperformanceteam\u002F","\u003Cp>This plugin offloads JavaScript execution to a Web Worker, improving performance by freeing up the main thread. This should translate into improved \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Farticles\u002Finp\" rel=\"nofollow ugc\">Interaction to Next Paint\u003C\u002Fa> (INP) scores.\u003C\u002Fp>\n\u003Cp>⚠ \u003Cem>This functionality is experimental, and \u003Cstrong>it is now \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWordPress\u002Fperformance\u002Fissues\u002F2284\" rel=\"nofollow ugc\">intended to be sunset\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fem> ⚠\u003C\u002Fp>\n\u003Cp>In order to opt in a script to be loaded in a worker, simply add \u003Ccode>worker\u003C\u002Fcode> script data to a registered script. For example,\u003Cbr \u002F>\nif you have a script registered with the handle of \u003Ccode>foo\u003C\u002Fcode>, opt-in to offload it to a web worker by doing:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>wp_script_add_data( 'foo', 'worker', true );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Unlike with the script loading strategies (async\u002Fdefer), any inline before\u002Fafter scripts associated with the worker-offloaded registered script will also be offloaded to the worker, whereas with the script strategies an inline after script would block the script from being delayed.\u003C\u002Fp>\n\u003Cp>Otherwise, the plugin currently ships with built-in integrations to offload Google Analytics to a web worker for the following plugin:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fseo-by-rank-math\u002F\" rel=\"ugc\">Rank Math SEO\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgoogle-site-kit\u002F\" rel=\"ugc\">Site Kit by Google\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"ugc\">WooCommerce\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Please monitor your analytics once activating to ensure all the expected events are being logged. At the same time, monitor your INP scores to check for improvement.\u003C\u002Fp>\n\u003Cp>This plugin relies on the \u003Ca href=\"https:\u002F\u002Fpartytown.builder.io\u002F\" rel=\"nofollow ugc\">Partytown 🎉\u003C\u002Fa> library by Builder.io, released under the MIT license. This library is in beta and there are quite a few \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBuilderIO\u002Fpartytown\u002Fissues?q=is%3Aopen+is%3Aissue+label%3Abug\" rel=\"nofollow ugc\">open bugs\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpartytown.builder.io\u002Fconfiguration\" rel=\"nofollow ugc\">Partytown configuration\u003C\u002Fa> can be modified via the \u003Ccode>plwwo_configuration\u003C\u002Fcode> filter. For example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_filter( 'plwwo_configuration', function ( $config ) {\n    $config['mainWindowAccessors'][] = 'wp'; \u002F\u002F Make the wp global available in the worker (e.g. wp.i18n and wp.hooks).\n    return $config;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>However, not all of the configuration options can be serialized to JSON in this way, for example the \u003Ccode>resolveUrl\u003C\u002Fcode> configuration is a function. To specify this, you can add an inline script as follows.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\nadd_action(\n    'wp_enqueue_scripts',\n    function () {\n        wp_add_inline_script(\n            'web-worker-offloading',\n            \u003C\u003C\u003CJS\n            window.partytown = {\n                ...(window.partytown || {}),\n                resolveUrl: (url, location, type) => {\n                    if (type === 'script') {\n                        const proxyUrl = new URL('https:\u002F\u002Fmy-reverse-proxy.example.com\u002F');\n                        proxyUrl.searchParams.append('url', url.href);\n                        return proxyUrl;\n                    }\n                    return url;\n                },\n            };\n            JS,\n            'before'\n        );\n    }\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>There are also many configuration options which are not documented, so refer to the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBuilderIO\u002Fpartytown\u002Fblob\u002Fb292a14047a0c12ca05ba97df1833935d42fdb66\u002Fsrc\u002Flib\u002Ftypes.ts#L393-L548\" rel=\"nofollow ugc\">TypeScript definitions\u003C\u002Fa>.\u003C\u002Fp>\n","Offloads select JavaScript execution to a Web Worker to reduce work on the main thread and improve the Interaction to Next Paint (INP) metric.",20000,75473,60,3,"2026-02-27T20:19:00.000Z","7.0","6.6","7.2",[20,21,22,23,24],"analytics","javascript","partytown","performance","web-worker","https:\u002F\u002Fgithub.com\u002FWordPress\u002Fperformance\u002Fissues\u002F176","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fweb-worker-offloading.0.2.1.zip",100,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":33,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":27,"avg_patch_time_days":36,"trust_score":37,"computed_at":38},"performanceteam",10,700000,336,79,"2026-04-04T06:20:17.411Z",[40,59,83,99,120],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":34,"downloaded":48,"rating":28,"num_ratings":28,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":50,"tags":52,"homepage":56,"download_link":57,"security_score":58,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"local-gajs","Local GAjs","0.0.1","Bjørn Johansen","https:\u002F\u002Fprofiles.wordpress.org\u002Fbjornjohansen\u002F","\u003Cp>Checks with Google twice a day if a new ga.js is available and downloads it automaticly. Settings for Analytics for WordPress is automaticly updated to use the locally hosted version.\u003C\u002Fp>\n\u003Cp>Locally hosted version have a serialized filename, so browsers will download the new version when available, so you can set a far-future HTTP expires header.\u003C\u002Fp>\n\u003Cp>There is no admin panel, everything is automatic.\u003C\u002Fp>\n","Host the ga.js locally for improved load speed. Integrates with Analytics for WordPress by Joost de Valk.",1726,"2013-09-30T18:54:00.000Z","","3.6.1",[53,54,21,55,23],"ga-js","google-analytics","optimize","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Flocal-gajs\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flocal-gajs.0.0.1.zip",85,{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":69,"num_ratings":70,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":50,"tags":74,"homepage":78,"download_link":79,"security_score":80,"vuln_count":81,"unpatched_count":28,"last_vuln_date":82,"fetched_at":30},"async-javascript","Async JavaScript","2.21.08.31","David Clough","https:\u002F\u002Fprofiles.wordpress.org\u002Fcloughit\u002F","\u003Cp>Eliminate Render-blocking Javascript in above-the-fold content with Async Javascript.\u003C\u002Fp>\n\u003Cp>Render-blocking Javascript prevents above-the-fold content on your page from being rendered until the javascript has finished loading. This can impact on your page speed and ultimately your ranking within search engines. It can also impact your user’s experience.\u003C\u002Fp>\n\u003Cp>Async JavaScript gives you full control of which scripts to add an ‘async’ or ‘defer’ attribute to or to exclude to help increase the performance of your WordPress website.\u003C\u002Fp>\n","Async Javascript lets you add 'async' or 'defer' attribute to scripts to exclude to help increase the performance of your WordPres &hellip;",80000,2047749,94,102,"2023-06-22T08:00:00.000Z","6.2.9","4.6",[75,21,76,23,77],"async","pagespeed","render-blocking","https:\u002F\u002Fautoptimize.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fasync-javascript.2.21.08.31.zip",84,2,"2021-06-13 00:00:00",{"slug":84,"name":85,"version":86,"author":7,"author_profile":8,"description":87,"short_description":88,"active_installs":89,"downloaded":90,"rating":27,"num_ratings":91,"last_updated":92,"tested_up_to":93,"requires_at_least":17,"requires_php":18,"tags":94,"homepage":97,"download_link":98,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"speculation-rules","Speculative Loading","1.6.0","\u003Cp>This plugin adds support for the \u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FSpeculation_Rules_API\" rel=\"nofollow ugc\">Speculation Rules API\u003C\u002Fa>, which allows defining rules by which certain URLs are dynamically prefetched or prerendered. This core Speculative Loading functionality was \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fcore\u002F2025\u002F03\u002F06\u002Fspeculative-loading-in-6-8\u002F\" rel=\"nofollow ugc\">merged into WordPress 6.8\u003C\u002Fa>, but it only prefetches with conservative eagerness by default. In contrast, this plugin defaults to prerendering with moderate eagerness (i.e. when interacting with a link), and it provides a user interface to customize the mode and eagerness via the “Speculative Loading” section on the \u003Cem>Settings > Reading\u003C\u002Fem> admin screen.\u003C\u002Fp>\n\u003Cp>By default, speculative loading is only enabled for logged-out users, since unauthenticated pages are typically only eligible for caching and so more efficient to prefetch\u002Fprerender. This means that sites with frequent logged-in users on the frontend—such as e-commerce, forums, or membership sites—will not benefit from the feature. If your server can handle the additional load (for example, with persistent object caching), you can opt in to enable speculative loading for all logged-in users or for administrators only. This setting exclusively affects frontend pages; admin screens are always excluded.\u003C\u002Fp>\n\u003Cp>A filter can be used to exclude certain URL paths from being eligible for prefetching and prerendering (see FAQ section). Alternatively, you can add the \u003Ccode>no-prerender\u003C\u002Fcode> CSS class to any link (\u003Ccode>\u003Ca>\u003C\u002Fcode> tag) that should not be prerendered. See FAQ for more information.\u003C\u002Fp>\n\u003Ch4>Browser support\u003C\u002Fh4>\n\u003Cp>The Speculation Rules API is a new web API, and the functionality used by the plugin is supported in Chromium-based browsers such as Chrome, Edge, or Opera using version 121 or above. Other browsers such as Safari and Firefox will ignore the functionality with no ill effects; they will simply not benefit from the speculative loading. Note that certain browser extensions may disable preloading by default.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcaniuse.com\u002Fmdn-html_elements_script_type_speculationrules\" rel=\"nofollow ugc\">Browser support for the Speculation Rules API in general\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fweb-platform\u002Fprerender-pages\" rel=\"nofollow ugc\">Information on document rules syntax support used by the plugin\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cem>This plugin was formerly known as Speculation Rules.\u003C\u002Fem>\u003C\u002Fp>\n","Enables browsers to speculatively prerender or prefetch pages to achieve near-instant loads based on user interaction.",70000,400885,18,"2025-12-02T22:34:00.000Z","6.9.4",[21,23,95,96,84],"prefetch","prerender","https:\u002F\u002Fgithub.com\u002FWordPress\u002Fperformance\u002Ftree\u002Ftrunk\u002Fplugins\u002Fspeculation-rules","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fspeculation-rules.1.6.0.zip",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":107,"downloaded":108,"rating":109,"num_ratings":110,"last_updated":111,"tested_up_to":112,"requires_at_least":113,"requires_php":50,"tags":114,"homepage":118,"download_link":119,"security_score":58,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"use-google-libraries","Use Google Libraries","1.6.2.3","Jason Penney","https:\u002F\u002Fprofiles.wordpress.org\u002Fjczorkmid\u002F","\u003Cp>A number of the javascript libraries distributed with WordPress are also\u003Cbr \u002F>\nhosted on Google’s \u003Ca href=\"http:\u002F\u002Fcode.google.com\u002Fapis\u002Fajaxlibs\u002F\" rel=\"nofollow ugc\">AJAX Libraries API\u003C\u002Fa>.\u003Cbr \u002F>\nThis plugin allows your WordPress site to use the content distribution\u003Cbr \u002F>\nnetwork side of Google’s AJAX Library API, rather than serving these files from your WordPress install directly.\u003C\u002Fp>\n\u003Cp>This provides numerous potential performance benefits:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>increases the chance that a user already has these files cached\u003C\u002Fli>\n\u003Cli>takes load off your server\u003C\u002Fli>\n\u003Cli>uses compressed versions of the libraries (where available)\u003C\u002Fli>\n\u003Cli>Google’s servers are set up to negotiate HTTP compression with the requesting browser\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For a more detailed look see Dave Ward’s \u003Ca href=\"https:\u002F\u002Fweb-beta.archive.org\u002Fweb\u002F20101216143500\u002Fencosia.com\u002F2008\u002F12\u002F10\u002F3-reasons-why-you-should-let-google-host-jquery-for-you\u002F\" rel=\"nofollow ugc\">3 reasons why you should let\u003Cbr \u002F>\nGoogle host jQuery for\u003Cbr \u002F>\nyou\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Supported Libraries and Components\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fdojotoolkit.org\u002F\" rel=\"nofollow ugc\">Dojo\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fjquery.com\u002F\" rel=\"nofollow ugc\">jQuery\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fui.jquery.com\u002F\" rel=\"nofollow ugc\">jQuery UI\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fmootools.net\u002F\" rel=\"nofollow ugc\">MooTools\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.prototypejs.org\u002F\" rel=\"nofollow ugc\">Prototype\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fscript.aculo.us\u002F\" rel=\"nofollow ugc\">script.aculo.us\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fcode.google.com\u002Fp\u002Fswfobject\u002F\" rel=\"nofollow ugc\">swfobject\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Links\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fjasonpenney.net\u002Fwordpress-plugins\u002Fuse-google-libraries\u002F\" rel=\"nofollow ugc\">Use Google Libraries Home\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fgithub.com\u002Fjpenney\u002Fuse-google-libraries\u002Fissues\" rel=\"nofollow ugc\">Issue Tracker\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fgithub.com\u002Fjpenney\u002Fuse-google-libraries\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fuse-google-libraries\" rel=\"ugc\">Support Forum\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Incompatible Plugins\u003C\u002Fh3>\n\u003Ch4>Better WordPress Minify\u003C\u002Fh4>\n\u003Cp>Better WordPress Minify version 1.2.2 does not yet support\u003Cbr \u002F>\nprotocol-relative URLs, but \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fconflict-with-use-google-libraries-152\" rel=\"ugc\">the next release is supposed to correct\u003Cbr \u002F>\nthis\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Gravity Forms\u003C\u002Fh4>\n\u003Cp>I’ve had reports of Gravity Forms breaking UGL, but I don’t have\u003Cbr \u002F>\naccess to Gravity Forms, so I’m not sure what’s going on.  If you need\u003Cbr \u002F>\nGravity Forms you might need to disable UGL, or it might be fine, I’m\u003Cbr \u002F>\nnot really sure.\u003C\u002Fp>\n\u003Ch4>WP-Minify\u003C\u002Fh4>\n\u003Cp>WP-Minify doesn’t yet support protocol-relative URLs.  Add\u003Cbr \u002F>\n‘\u002F\u002Fajax.googleapis.com\u002F’ as a JS and CSS exclusion.\u003C\u002Fp>\n\u003Ch3>Incompatible Themes\u003C\u002Fh3>\n\u003Ch4>K2\u003C\u002Fh4>\n\u003Cp>I’ve had scattered reports that UGL is stepping out of the way when\u003Cbr \u002F>\nusing K2.\u003C\u002Fp>\n\u003Ch3>A Request\u003C\u002Fh3>\n\u003Cp>If you’re going to flag the plugin as “broken” in the WordPress Plugin\u003Cbr \u002F>\nDirectory, please try and \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Ftags\u002Fuse-google-libraries?forum_id=10\" rel=\"ugc\">let me know \u003Cem>what\u003C\u002Fem> is\u003Cbr \u002F>\nbroken\u003C\u002Fa>.\u003Cbr \u002F>\nI’m not a mind reader.\u003C\u002Fp>\n\u003Ch3>Technical Details\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Use Google Libraries\u003C\u002Fstrong> uses the following hooks (each with a priority of 1000).\u003C\u002Fp>\n\u003Ch4>wp_default_scripts\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Use Google Libraries\u003C\u002Fstrong> compares it’s list of supported scripts to those\u003Cbr \u002F>\nregistered, and replaces the standard registrations \u003Ccode>src\u003C\u002Fcode> with ones that\u003Cbr \u002F>\npoint to Google’s servers.  Other attributes (like dependencies) are left\u003Cbr \u002F>\nintact.\u003C\u002Fp>\n\u003Ch4>script_loader_src\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Use Google Libraries\u003C\u002Fstrong> removes the \u003Ccode>ver=x.y.z\u003C\u002Fcode> query string from the URL\u003Cbr \u002F>\nused to load the requested library \u003Cem>if\u003C\u002Fem> it is going to load the library from\u003Cbr \u002F>\n    ajax.googleapis.com.  Otherwise the URL is left unaltered.  This both\u003Cbr \u002F>\nimproves the chances of the given URL already being cached, and prevents\u003Cbr \u002F>\n\u003Cstrong>script.aculo.us\u003C\u002Fstrong> from including scripts multiple times.\u003C\u002Fp>\n\u003Cp>If jQuery is enqued \u003Cstrong>Use Google Libraries\u003C\u002Fstrong> will inject a bit of\u003Cbr \u002F>\njavascript before the next enqueued script enabling jQuery’s \u003Ca href=\"http:\u002F\u002Fdocs.jquery.com\u002FCore\u002FjQuery.noConflict\" rel=\"nofollow ugc\">noConflict mode\u003C\u002Fa> as it would\u003Cbr \u002F>\nwith the standard WordPress version.\u003C\u002Fp>\n\u003Ch3>References\u003C\u002Fh3>\n\u003Cp>Parts of this plugin (specificly, the dropping of the micro number,\u003Cbr \u002F>\nwhich has since been removed for better caching performance) were\u003Cbr \u002F>\ninspired by John Blackbourn’s\u003Cbr \u002F>\n\u003Cstrong>\u003Ca href=\"http:\u002F\u002Flud.icro.us\u002Fwordpress-plugin-google-ajax-libraries\u002F\" rel=\"nofollow ugc\">Google AJAX Libraries\u003C\u002Fa>\u003C\u002Fstrong>,\u003Cbr \u002F>\nwhich has very similar goals to this plugin.\u003C\u002Fp>\n\u003Ch3>Future Plans\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>add ability to disable protocol relative URLs\u003C\u002Fli>\n\u003Cli>add ability to disable on frontend and\u002For admin\u003C\u002Fli>\n\u003C\u002Ful>\n","Allows your site to use common javascript libraries from Google's AJAX Libraries CDN, rather than from WordPress's own copies.",10000,747905,88,47,"2017-11-28T05:16:00.000Z","4.7.32","3.4",[115,116,21,117,23],"cdn","google","jquery","http:\u002F\u002Fjasonpenney.net\u002Fwordpress-plugins\u002Fuse-google-libraries\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fuse-google-libraries.zip",{"slug":121,"name":122,"version":123,"author":124,"author_profile":125,"description":126,"short_description":127,"active_installs":128,"downloaded":129,"rating":69,"num_ratings":130,"last_updated":131,"tested_up_to":132,"requires_at_least":133,"requires_php":134,"tags":135,"homepage":139,"download_link":140,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"scripts-to-footerphp","Scripts To Footer","0.7.3","Joshua David Nelson","https:\u002F\u002Fprofiles.wordpress.org\u002Fjoshuadnelson\u002F","\u003Cp>This small plugin moves scripts to the footer. Note that this only works if you have plugins and a theme that utilizes \u003Ccode>wp_enqueue_scripts\u003C\u002Fcode> correctly.\u003C\u002Fp>\n\u003Cp>You can disable the plugin on specific pages and posts directly via the post\u002Fpage edit screen metabox.\u003C\u002Fp>\n\u003Cp>You can disable the plugin on specific archive pages (blog page, search page, post type and taxonomy archives) via the settings page.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Everything Broken?\u003C\u002Fstrong> Try placing jQuery back into the header via Settings > Scripts to Footer, “Keep jQuery in the Header” checkbox. If that doesn’t work, refer to the walkthrough below for using the \u003Ccode>stf_exclude_scripts\u003C\u002Fcode> filter for the script that is causing the issue.\u003C\u002Fp>\n\u003Cp>Check out the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoshuadavidnelson\u002Fscripts-to-footer\u002Fwiki\" rel=\"nofollow ugc\">documentation\u003C\u002Fa> on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoshuadavidnelson\u002Fscripts-to-footer\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> or some quick walkthroughs below.\u003C\u002Fp>\n\u003Ch4>Keeping specific Scripts in the Header\u003C\u002Fh4>\n\u003Cp>As of version 0.6 you can now keep specific scripts in the header. Note: this will print any scripts they depend on as well (if you want to keep \u003Ccode>jquery-effects-core\u003C\u002Fcode> in the header, you’ll also get \u003Ccode>jQuery\u003C\u002Fcode> in the header, so no need to add both).\u003C\u002Fp>\n\u003Cp>Specifically for jQuery, see the settings page option, as it is a common request we’ve built it into the settings.\u003C\u002Fp>\n\u003Cp>For any other scripts, use this filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'stf_exclude_scripts', 'jdn_header_scripts', 10, 1 );\nfunction jdn_header_scripts( $scripts ) {\n\n    $scripts[] = 'backbone'; \u002F\u002F Replace 'backbone' with the script slug\n\n    return $scripts;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You will need the correct script slug, which is used when the script is registered, and the script will only be printed into the header \u003Cem>if it’s enqueued\u003C\u002Fem>. Check out the scripts that come registered \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fwp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress\" rel=\"nofollow ugc\">out-of-the-box with WordPress\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> As of version 0.6.3, \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FConditional_Tags\" rel=\"nofollow ugc\">conditional tags\u003C\u002Fa> will work with the \u003Ccode>stf_exclude_scripts\u003C\u002Fcode> filter.\u003C\u002Fp>\n\u003Ch4>Custom Post Type Support\u003C\u002Fh4>\n\u003Cp>If you’re comfortable with code you can use the \u003Ccode>scripts_to_footer_post_types\u003C\u002Fcode> filter to change the post types this applies to (it only applies to pages and posts by default). For example, if you have a custom post type called “project” you could add support for this metabox via the post type filter like this:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function stf_add_cpt_support( $post_types ) {\n\n    $post_types[] = 'project';\n\n    return $post_types;\n}\nadd_filter( 'scripts_to_footer_post_types', 'stf_add_cpt_support' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Excluding Pages\u002FPosts\u002FTemplates Via Filter\u003C\u002Fh4>\n\u003Cp>You can either use the checkbox option to disable the plugin’s action on a specific page\u002Fpost, or you can utilize a filter. The filter also passes the post\u002Fpage id, if there is one (archive templates don’t have ids!).\u003C\u002Fp>\n\u003Cp>For example, for the “page” post type:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function stf_exclude_my_page( $exclude_page, $post_id ) {\n\n    if ( is_front_page() ) {\n        $exclude_page = 'on'; \u002F\u002F this turns on the \"exclude\" option\n    }\n\n    return $exclude_page;\n}\nadd_filter( 'stf_page', 'stf_exclude_my_page' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Replace \u003Ccode>stf_page\u003C\u002Fcode> with \u003Ccode>stf_post\u003C\u002Fcode> for posts, or the slug of your custom post type. For instance, a post type called “project” can be filtered with \u003Ccode>stf_project\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch4>More Documentation\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoshuadavidnelson\u002Fscripts-to-footer\u002Fwiki\" rel=\"nofollow ugc\">See the plugin’s wiki\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Development \u002F Contributing\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoshuadavidnelson\u002Fscripts-to-footer\" rel=\"nofollow ugc\">View this plugin on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>Please feel free to open a \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjoshuadavidnelson\u002Fscripts-to-footer\u002Fissues\" rel=\"nofollow ugc\">Github Issue\u003C\u002Fa> to report conflicts or goto \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fscripts-to-footerphp\" rel=\"ugc\">the WP.org support forum\u003C\u002Fa>. If there is something wrong with Scripts-to-Footer, we’ll update it. However, if it’s a another plugin or theme we can only contact the developer with the issue to attempt to resolve it.\u003C\u002Fp>\n","Move your scripts to the footer to help speed up perceived page load times and improve user experience.",8000,253349,37,"2025-11-17T02:54:00.000Z","6.8.5","5.3","7.4",[136,137,21,23,138],"footer","head","speed","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Fscripts-to-footerphp\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fscripts-to-footerphp.0.7.3.zip",{"attackSurface":142,"codeSignals":182,"taintFlows":191,"riskAssessment":192,"analyzedAt":199},{"hooks":143,"ajaxHandlers":178,"restRoutes":179,"shortcodes":180,"cronEvents":181,"entryPointCount":28,"unprotectedCount":28},[144,150,155,159,163,167,170,174],{"type":145,"name":146,"callback":147,"file":148,"line":149},"action","wp_default_scripts","plwwo_register_default_scripts","hooks.php",13,{"type":151,"name":152,"callback":153,"file":148,"line":154},"filter","print_scripts_array","plwwo_filter_print_scripts_array",14,{"type":151,"name":156,"callback":157,"priority":34,"file":148,"line":158},"script_loader_tag","plwwo_update_script_type",15,{"type":151,"name":160,"callback":161,"file":148,"line":162},"wp_inline_script_attributes","plwwo_filter_inline_script_attributes",16,{"type":145,"name":164,"callback":165,"file":148,"line":166},"wp_head","plwwo_render_generator_meta_tag",17,{"type":145,"name":168,"callback":169,"file":148,"line":91},"after_plugin_row_meta","plwwo_render_sunset_notice",{"type":151,"name":152,"callback":171,"file":172,"line":173},"closure","third-party.php",24,{"type":145,"name":175,"callback":176,"file":172,"line":177},"plugins_loaded","plwwo_load_third_party_integrations",62,[],[],[],[],{"dangerousFunctions":183,"sqlUsage":184,"outputEscaping":186,"fileOperations":189,"externalRequests":28,"nonceChecks":28,"capabilityChecks":28,"bundledLibraries":190},[],{"prepared":28,"raw":28,"locations":185},[],{"escaped":187,"rawEcho":28,"locations":188},6,[],1,[],[],{"summary":193,"deductions":194},"The static analysis of the \"web-worker-offloading\" plugin version 0.2.1 indicates a generally strong security posture. The plugin reports zero AJAX handlers, REST API routes, shortcodes, or cron events, resulting in a very small attack surface with no apparent unprotected entry points. Furthermore, the code signals reveal no dangerous functions, all SQL queries utilize prepared statements, and all identified output is properly escaped. The absence of external HTTP requests and taint analysis findings with unsanitized paths further contribute to this positive assessment.  The plugin's vulnerability history is also clear, with zero known CVEs recorded, suggesting a history of secure development and maintenance. The primary concern is the complete lack of nonce and capability checks. While the current entry point count is zero, this absence of fundamental security checks for potential future additions or unforeseen entry points is a significant weakness. If any new entry points are introduced without proper authorization checks, the plugin could become vulnerable.",[195,197],{"reason":196,"points":34},"No nonce checks detected",{"reason":198,"points":34},"No capability checks detected","2026-03-16T17:30:21.285Z",{"wat":201,"direct":210},{"assetPaths":202,"generatorPatterns":205,"scriptPaths":206,"versionParams":207},[203,204],"\u002Fwp-content\u002Fplugins\u002Fweb-worker-offloading\u002Fbuild\u002Fpartytown.js","\u002Fwp-content\u002Fplugins\u002Fweb-worker-offloading\u002Fbuild\u002Fdebug\u002Fpartytown.js",[],[203,204],[208,209],"web-worker-offloading\u002Fbuild\u002Fpartytown.js?ver=","web-worker-offloading\u002Fbuild\u002Fdebug\u002Fpartytown.js?ver=",{"cssClasses":211,"htmlComments":212,"htmlAttributes":213,"restEndpoints":214,"jsGlobals":215,"shortcodeOutput":216},[],[],[],[],[22],[]]