Automatic Git Deploy with Kinsta via SSH

Kinsta is my preferred WordPress host provider. This year I’ve switched all my new customers to Kinsta. Coming from WP Engine, one feature I miss is a per site git URL which will automatically deploy updates whenever a git push is run locally. This isn’t something Kinsta currently offers. There are plenty of workarounds. In fact…

A Week with Windows 10 and Linux Subsystem for WordPress Development

It’s been 10 years since I switched to Apple, coming from Windows. Having native access to unix tools via the terminal was what initially attracted me to the world of Mac. I recently spent a week on Windows 10 and was surprised how well it worked. Another Macbook Pro repair, another chance for a clean…

Speeding up Extracting a Site from Multisite

Last year I wrote about Extracting a Site from Multisite. The real tedious part is manually moving themes, plugins and uploads relating to a particular subsite over to a standard WordPress install. Luckily this can be automated using bash and Rclone. Rclone makes scripting over sftp enjoyable. Rclone supports practically any remote storage provider…

Concurrent Site Monitor in Bash

Something that’s important for every website is a site monitor, and a great tool for getting started is Jetpack Monitor. It’s free and sends out an email notification whenever downtime is detected. If you want more control and flexibility over downtime notifications, I recommend using a paid site monitoring service or do your own site…

Removing Sensitive Data from Git Repos

If you’ve ever worked with git for a WordPress project, you may at some point accidentally added private keys and other sensitive data into the repo. It’s easy to do especially when your working on a project that you’re not intending on sharing. Going back and modifying a past commit isn’t a simple one-liner.…

Writing Personalized Scheduled Emails with WordPress

There are many options for sending out email newsletters. Recently, I was reviewing various options for sending out my CaptainCore updates. At first I was tempted to just grab entries from my Gravity Forms and send out a regular email with everyone BCC’d. However I foresee how that will quickly become problematic when manually maintaining…

Working with WP Engine’s Legacy Staging

WP Engine is one of the main web hosts I use for Anchor Hosting. They recently announced new staging and development environments which will eventually make the existing staging site feature obsolete. In fact they now call staging “Legacy Staging”. During this transition phase having both legacy staging and the new staging and development environments…

Argument List Too Long with WP-CLI

When using command line applications, like WP-CLI, you may run into a scenario where you’re attempting to pass too much information via arguments. That will result in an error like zsh: argument list too long: wp or /usr/local/bin/wp: Argument list too long. Similar to website URLs, there is a maximum length a command can be.…

My First Custom Table with WordPress

A few months back I announced a new feature called Quicksaves. Each Quicksave contains a fair amount of website data which I’ve been storing in a WordPress custom post type and some custom fields with Advanced Custom Fields. Right from the beginning, I’ve suspected that this might quickly grow beyond what a WordPress custom post…

Magic Login Links for WordPress

Most WordPress management systems include a one-click login button for accessing the various WordPress sites. This makes it really convenient when bouncing between different WordPress sites as no passwords are required. I’ve wanted this super convenient login setup for my own management toolkit. Recently I stumbled on a free plugin made by Daniel Bachhuber call One…