A local creative agency hired us last week to refresh their outdated portfolio website. They wanted a layout that looked sleek, modern, and high-end to attract corporate clients. Since we had a tight deadline of just one week, we skipped building a custom theme from scratch and chose Zentro - Digital Agency WordPress as our foundation.
I spun up a staging environment on our VPS and completed the initial install. The theme comes with several pre-made layouts for design studios and marketing firms. Setting up the base demo was easy, and the overall aesthetic suited the client's brand. However, as an experienced architect, I know that good looks do not always mean good performance. I knew I had some optimization work ahead of me.
While running audit tests on mobile devices, I noticed the initial page load felt sluggish. The diagnostic reports showed a long script execution time. Digging into the source code, I found that the theme was loading heavy JS libraries like Isotope and Packery on every single page, even on standard contact and about pages that did not use any portfolio grids.
To fix this and keep the site light, I wrote a PHP function in our child theme's functions.php file to dequeue these scripts from pages where they were not needed:
add_action('wp_print_scripts', 'dequeue_zentro_unused_js', 100);
function dequeue_zentro_unused_js() {
// Only load grid scripts on actual portfolio pages
if (!is_post_type_archive('portfolio') && !is_page_template('page-templates/portfolio-grid.php')) {
wp_dequeue_script('isotope');
wp_dequeue_script('packery');
wp_dequeue_script('zentro-portfolio-js');
}
}After deploying this small code block, the mobile page size dropped by over 180KB, and our blocking time went down significantly.
Once the core templates were lightweight, I started setting up the backend essentials. For any new build, I usually look for a few Must-Have Plugins to handle basic security, webp image generation, and page caching. This ensures the site stays fast even when the client uploads large images later.
I also decided to add a custom Nginx configuration block to our server settings to make sure static resources like web fonts and images are cached on the visitor's browser for as long as possible:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}This simple setup took just a minute but cut down server requests by half on return visits.
After seven days of tweaking, testing, and writing a few lines of clean-up code, we launched the site.
Here is my honest take on this theme:
The client is happy with the final result. It is a solid theme for agencies, provided you have a developer on hand to clean up the asset loading.