Blog

Posting Weekly

Dynamically Load WordPress Database

The file wp-config.php defines configuration before WordPress is fully loaded, and includes things like database credentials and unique authentication keys. Did you know these configurations can dynamically be loaded? The following custom code will dynamically determine a database name based on an environment variable. Multisite like mode using WP-CLI and shell variables Giving the…

Manually Merging Posts Between WordPress Sites

My recommendation has always been to avoid workflows that involve deploying staging to/from production. That’s because merging WordPress websites is really hard if not nearly impossible to pull off. There are just too moving pieces to track. 👀 Mergebot was a brilliant attempt at solving the merging problem. Unfortunately, that project has been abandoned…

Digging into Mailgun’s API with PHP

Mailgun is a popular transactional email service which I use on many WordPress websites. They have an official WordPress plugin and documentation for developers. I spent the weekend digging into their API in order to revamp an integration between Mailgun and a WordPress plugin I wrote. Interested to see what it looks like to…

Quickly Locate Unknown Disk Usage over SSH

Ever have a website’s disk usage grow over 100GBs unexpectedly? This week I did. This is how I quickly figured out where the extra data was located with the help of rclone and Kinsta’s ssh access. Good host providers let you know when you’re over your limits. I use Kinsta to host all of…

Disable Web Requests for WP-CLI Only WordPress

Did you know you can use WordPress exclusively from WP-CLI? The use case for doing this is pretty unique. Not likely something you’ll see in the wild. Generally you want WordPress to handle web requests however for a WP-CLI only WordPress site we’ll want to disable them. Let’s look at how we can lock…

Handing Legacy Static Sites with Kinsta

On occasion I need to host a PHP static website. This is typically while the customer is working on a new WordPress site and simply needs to keep their legacy site live until the new one replaces it. A good option for handling these sites would be to host with a cheap MediaTemple GRID…

Reusing Cookies for Automation

Previously I’ve wrote about using a Ruby script to automate fetching data from WP Engine’s portal. Recently that script broke due to the way WP Engine’s login process works. While it might be possible to fix, let’s look at bypassing the login process completely. This involves using a real browser to login first then…

Local Lightning for WordPress Development

When it comes to local WordPress development, I’ve been split between two different tools: Laravel Valet and Local by Flywheel. Valet is really fast, however Local just works. Well, meet Local Lightning. It’s a completely remade version of Local by Flywheel which runs super fast and just works. Goodbye virtualization, hello native software Local…

Exposing WSL to Windows for Dev Backups

I recently switched my primary computer from a Macbook Pro to a Surface Laptop. My WordPress development environment is now primarily contained within WSL which is the Linux portion of Windows. WSL’s filesystem isn’t exposed to Windows which means my development environment is not automatically picked up by Backblaze, my personal backup solution. Here…