Austin Ginder

Austin Ginder

Remote commands over SSH from WordPress (Using phpseclib)

I commonly want WordPress to run code, like a bash script, directly on the command line. In PHP there is a set of functions which is commonly disabled for security purposes. That includes exec which is PHP’s command to do just…

Backup Offloaded Amazon S3 Uploads

If you’re using WP Offload S3 to free up local storage then you’ll also need to backup your Amazon S3 uploads. Rather than running two separate backups, one for the website and one for Amazon S3, the following is how I…

Resolving SFTP Errors After Server Migrations

Have you ever connected to a web server over SFTP? If so then it’s likely you’ll see one of these errors at some point: remote host identification has changed , host keys changed, offending key for IP or something similar. This is somewhat…

Triggering WordPress AJAX Callback from PHP

WordPress makes it easy to run PHP code from Javascript. This is extremely useful for running custom code without reloading the page. The following part I’m using to send backup snapshot emails. This will run the PHP function snapshot_email_action_callback. This works…

Consolidating WP Engine Servers

I host most of my WordPress websites with WP Engine. I’m currently managing 681 WordPress installations spread across 4 dedicated WP Engine servers, and as of one month ago I had 7 dedicated WP Engine servers. The following is some…

Removing Orphaned Uploads From Multisite

If you have an active multisite network, chances are you have orphaned content left over from deleted subsites. To clean up the database, there is a fantastic plugin Cleanup Multisite DB Tables which adds a few wp-cli commands to locate and remove…

Simultaneous Website Previewing with Two Servers

So typically when migrating or launching WordPress sites, I’ll modify my HOSTS file in order to preview the site at its final destination before going public. That’s a great way to catch problems before updating DNS however I’ve often wanted…

Regex with WordPress Database Backups

For too long, regular expressions or regex have been mysterious to me. With the help of the fantastic video series at Laracasts the quirky pattern matching syntax has started to make sense. The following are some experiments with pattern matching on…

Extracting a Site from Multisite

Something I’ve been working on recently is breaking apart some unnecessary legacy Multisite networks into separate WordPress installations. There are times where Multisite is useful, however I have overused Multisite in the past. The following are some tips when extracting sites…

Optimizing with Kinsta Analytics and KeyCDN

Kinsta just release a new analytics dashboard which contains a list of the top 30 bandwidth usage files. I thought I’d give it a look over to see if I could make any optimizations. Since all of my Kinsta websites…