WP Rocket Footer JS


This plugin will do the following:

  • Process all inline and external JS to one file, not multiple, and put at the footer with async on
  • Put all localized scripts together before the primary script above
  • Automatically optimize popular 3rd party services including:
    • Tawk.to
    • WP Rockets lazyload
    • Google Analytics
    • Double Click Google Analytics
    • Avvo.com Tracking
  • Automatically lazy load popular widgets if https://wordpress.org/plugins/lazy-load-xt/ or https://wordpress.org/plugins/a3-lazy-load/ are active. Services include:
    • Google Maps with Avada theme
    • All Facebook social widgets
    • All Twitter social widgets
    • All Google Plus social widgets
    • All Google Adsense advertisements
    • Any iframe

If you need dedicated/professional assistance with this plugin or just want an expert to get your site to run the fastest it can be, you may hire me at Codeable


This section describes how to install the plugin and get it working.

  1. Upload the plugin files to the /wp-content/plugins/rocket-footer-js directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress
  3. Clear WP-Rocket cache and view HTML source!


Works first time

Installed into wordpress with wp rocket installed, and it instantly did what it needed to do with JS. Caused a minimal pageload speed improvement, but also bumped the scores on Google PageSpeed to an A rating. Which is what we wanted to do.

Also it helped me fix a jquery issue that I was having with wp rocket out of the box and had yet to resolve, so that is even better.


Works perfectly

I have test it and it works great. No errors or breaking anything on the site. Thanks a lot.

Read all 6 reviews

Contributors & Developers

“WP Rocket Footer JS” is open source software. The following people have contributed to this plugin.




  • Improve facebook pixel support to prevent possible runtime errors


  • Add support for Avvo.com tracking
  • Ensure zxcvbn password meter is not changed on login and signup pages


  • Update Page Links To compatibility


  • Improve UTF-8 character handling
  • Add support for googleanalytics plugin
  • Improve GA regex
  • Add compatibility with N2Extend framework


  • Add support for Sumo Me


  • Improve multi-line comment regex
  • Rebuild cache system without using SQL


  • Extract and minify GA calls


  • Remove comments from js since JSMin doesn’t do it by using a new function rocket_footer_js_minify
  • Run rocket_footer_js_process_remote_script and rocket_footer_js_process_local_script when using cached data as well
  • If rocket_footer_js_process_remote_script/rocket_footer_js_process_local_script return a modified script, then use the original in the cache but minified so it gets processed again properly the next request
  • Inline scripts were not getting cached
  • Removed duplicate minify call for remote scripts
  • Cache the tawk.to script
  • Fix tawk.to minify call


  • Ensure home uses the active URL scheme
  • Pass $tags_ref to rocket_footer_js_process_local_script not $tags
  • Change rocket_footer_js_process_local_script signature to use $tags by reference
  • Add support for Facebook Pixel
  • Add support for Pixel Your Site plugin since it stores the pixel code in its own script
  • Add support for Google Web Fonts JS loader


  • Automatically lazy load iframes if they are not lazy loaded already


  • Ensure async attribute is compatible with XHTML


  • Ensure lazy load comments don’t get stripped by html minify by using tag markers and doing a regex replacement after minification
  • Improve Twitter regex to support another variation
  • Improve Facebook regex to support another variation
  • Add support for DoubleClick GA
  • Add support for Google Adsense lazy loading


  • Add compatibility hack for older libxml
  • Skip text/html scripts


  • Treat google maps as loading async with a typeof timer and load infobox async if it exists
  • Check document.readyState to run map function in case the window load event already ran


  • Move debug code to rocket_footer_js_debug_enabled function
  • Move web fetch code to rocket_footer_js_remote_fetch function
  • Use rocket_add_url_protocol in rocket_footer_js_rewrite_js_loaders


  • Auto optimize Tawk.to, WP Rockets lazyload, and google analytics to use normal tags instead of javascript loaders so they can get minified
  • If minify is enabled due to LazyLoadXT or A3_Lazy_Load support, then lazy load facebook, twitter, google plus widgets, and avada google maps (if Avada_GoogleMap exists and google maps is on)
  • Enqueue LazyLoadXT widget extension if lazyload is enabled since lazy load plugins don’t supply it
  • Improve lazy load regex patterns
  • Split minify to rocket_footer_js_process_remote_script and rocket_footer_js_process_locate_script functions with associated filters to hook into
  • Minify emojione in tawk.to JS
  • Add hook rocket_footer_js_rewrite_js_loaders to allow pre-processing before minification
  • Add support for avada google maps lazy loading
  • Remove duplicate google maps API scripts and prioritize the first one that has an API key
  • Only lazy load google maps if there is any script content
  • Added function rocket_footer_js_lazyload_script to reduce code duplication


  • Ensure url scheme is set correctly when converting from a CDN domain


  • Disable minify on AMP pages


  • Tested on WordPress 4.7
  • Ensure PHP 5.3 compatibility


  • Correct/improve relative URL logic
  • Prevent html from being minified before JS to prevent issues with detection
  • Add new minify cache system to reduce computation time required to minify a page

Notice: This new cache system could cause unknown issues. While it has been tested, not every situation can be accounted for. Contact me if you hit a problem.

Notice: Cache is stored in transients, so only a normal wp-rocket purge will clear everything


  • Fix logic bug in data-no-minify check


  • Check for relative URL’s
  • Add compatibility support for “Page Links To” since it does naughty things with buffering


  • Bugfix fetching JS from filesystem with http\Url
  • Add a newline into the automatic semicolon insertion for the case that the last text is a comment


  • Ensure zxcvbn is loaded normally and not async


  • Exclude js template script tags


  • Check for sourcemaps and add a new line to prevent syntax errors


  • Check for off in display_errors


  • Catch errors if WP_Error is returned or status code is not 200 or 304 or its empty
  • Log errors if debug mode is enabled or PHP display_errors is enabled
  • Disable minify when debug is on regardless of settings
  • Log processed scripts in debug mode
  • Move query string check to only run for local files


  • Web fetch dynamic scripts being defined as not having a JS extension
  • Add regex to remove broken conditional comments out of inline js


  • Add constant DONOTMINIFYJS and function is_rocket_post_excluded_option to minify status check


  • If file is external, we do not want to treat the response as a filesystem path
  • Always set the url domain back to home_url() because it will need to be that even if the original is a CDN or not


  • Use home URL and ABSPATH for the site root and not assume everything is in wp-content


  • Use a http_build_url shim as a fallback instead of deactivating with an error


  • Set main script tag to async


  • Minified wrong JS buffer for inline JS
  • Don’t prepend semicolon since its already conditionally prepended for inline JS


  • Add detection for PHP HTTP PECL extension
  • Update code commentation and PHPDoc blocks


  • Changed logic to disable minify setting on front end and combine all scripts + minify if option is set (excluding localized scripts) to a new file in minify cache folder. File name will have user ID if logged in to be unique.
  • Keep application/ld+json in the header


  • Exclude JS extension from slug name and ensure remote file is saved with a JS extension


  • Check for CDN files in remote tags and convert back to a local filename for minification
  • Do variable cleanup


  • Initial version