bichdao.chau@gmail.com

Update equeued file sources in WordPress - 14/02/2023

Lorem ipsum dolor sit amet consectetur et ultrices blandit neque ege

Today I have a problem when building obfuscation code for my team. After creating the uglify files, I need to replace all the original file sources with the uglify ones. The most important thing is I want the code still works with WP Rocket plugin.

After a quick research, I found that WordPress has many hooks to adjust the assets.

First of all, I think I need to list all the scripts and styles enqueued, so I found this link. It’s pretty cool that I can get all the things enqueued, but I can’t change the enqueued resources with this hook because it’s called when the resources already enqueued.

Because I just want to get all the enqueued scripts, so I tried with the filter script_loader_src which I’ve used to remove query string from some core WordPress scripts before. I think it’s the correct filter I need, it has the $source variable for me to update, and the $handle to filter out which scripts I need to replace. Cool! Let’s do the code!

The main purpose of this code is getting all the enqueued resources, filter out which has my theme prefix in the $handle to update the resource URL. The final code will be something like this:

/**
 * Update enqueued resource in WordPress
 */
 
add_filter('script_loader_src', 'dc_update_resource_urls', 9999, 2);
function dc_update_resource_urls($src, $handle){
  // check if it's my theme scripts and it's not the minified files
  if(!is_admin() && strpos($src, 'min.js') === false){
    // do the replacement
    $src = str_replace('.js', '.min.js', $src);
  }
  return $src;
}