Finding the real WordPress performance bottleneck
A client’s site was crawling at 5-7 seconds a page. The cause wasn’t a slow query but an uncached external API call from a plugin, which I tracked down with Query Monitor and fixed with a transient.
A client’s site was crawling at 5-7 seconds a page. The cause wasn’t a slow query but an uncached external API call from a plugin, which I tracked down with Query Monitor and fixed with a transient.
A legacy WooCommerce plugin had get_option and update_option calls scattered everywhere, with clashing prefixes resetting settings. The fix was one wrapper class that owns the options table and adds the prefix for you.
A client wanted a shortcode to highlight reader comments, but the inherited code crammed all the HTML into the shortcode function. Moving it into a dedicated generator class and a separate template file keeps the markup out of the PHP.
A custom events plugin where every class built its own dependencies was impossible to test or change. A small DI container built from closures gave one place to wire the objects together, without pulling in a framework.
Had to onboard a new junior dev last month for a big WooCommerce project. First task was simple: set up the local environment. He’s a…
I got a call from a client last week. Their last developer bailed, and they had a “simple” request: add a new delivery option to…
I got a call from a client in a full-blown panic. Their WooCommerce store, which does huge numbers, was completely down. On Black Friday. They…
I got a call from a new client running a pretty busy WooCommerce shop. Their dev team was pushing updates, but every deployment was a…
A buddy of mine, a killer PHP dev, built a WooCommerce extension for subscription invoicing. It was clean, well-documented, and solved a real problem. He…
I inherited a Laravel project a while back. The client wanted a simple change: rename a few database columns for clarity. What should have been…