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 do handle using a single backup bash script. Rclone can incrementally sync S3 and…

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 common due to how SFTP operates Your computer tracks SFTP and SSH connections in…

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 great when using jQuery, however recently I was wondering if it’s possible to trigger…

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 more depth look at why I ended up upgrading and merging my WP servers.…

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 any orphaned database tables. To cleanup files, I wasn’t able to find an automated…

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 to see both websites at the same time for a more detailed comparison. With…

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 WordPress database backups. Extracting data directly from database files Ok so this use case…

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 from Multisite. Start with empty folders on your computer This might seem pretty basic,…

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 have KeyCDN enabled anything in the top list are most likely not loading from…

Auto Payments with Manual WooCommerce Subscriptions

WooCommerce Subscriptions is great way to handle recurring subscriptions on WordPress. You can create a WooCommerce Subscription product out of the box, which allows your customers to purchase a subscription with automatic payments. If you want more control you can use WooCommerce like an invoicing system by manually creating subscriptions on the backend and…