Automating WP Engine’s User Portal with Ruby Script

There is a Ruby gem called Mechanize which is a powerful library for automating web interactions. While playing around with it over the course of a weekend I ended up making the following Ruby script can be run over the command line to login to WP Engine’s web user portal (my.wpengine.com) and do various tasks. The…

Bulk Domain Record Lookups with Bash

Looking up domain records is a common daily task. Most of the time I use a website called MX Toolbox. That works great for single lookup. On occasion I need to do a bulk lookup for group of websites. While there are some websites that do bulk I found the best way is to simply run…

Injecting a custom mu-plugin for FTP deployments on WP Engine

Sometimes FTP is your only option In a world where we have such amazing tools like WP-CLI it’s hard to imagine why you’d want to attempt scripting over FTP. WP Engine doesn’t allow SSH access and FTP was really the only option if I wanted to automate things with their service. One time use mu-plugins It all starts with…

Manipulating Gravity Forms exports

Gravity Forms is my go to form plugin for WordPress. Recently a client asked to change the address state field to use state codes (example: PA) rather then full states (example: Pennsylvania). While I could replace the default address field with a custom dropdown field, I didn’t want to break any past entries. Modifing the…

Protecting static files with PHP script and WP Engine

There are many membership plugins for WordPress. A number of my customers run MemberPress which is a powerful and flexible membership plugin. I recently ran into a situation where images uploaded via the media library on restricted posts were getting shared by paid users and eventually picked up by Google and other search engines.…

Syncing Large Data with Rclone

Ever once in a while I find myself in a situation where I need to move a large amount of data between a cloud storage provider and my local computer. Like moving 20GBs of photos to Google or pulling down 40GBs of backups from Amazon S3. This is all made simple with a single command line…

5 Ways to Sink a Potentially Great Website

The following was content for a presentation I did for Churchill Creative at their team meetup.  5 Ways to Sink a Potentially Great Website Make your menus as complicated as you can Overload your site with duplicate content Use sliders everywhere Make it as difficult as you can for someone to contact you BOLD AND CAPILTALIZE EVERYTHING, BECAUSE IT’S IMPORTANT!!!! Now…

Tracing Emails To Their Source Website

Every now and again I get a real email but no idea who it’s for. It’s actually more common then I’d like to admit. The only thing identifiable is that it came from a WordPress site running Gravity Forms something like the following. Most times this happens due to a misconfigured email notification or…

Disconnecting from Jetpack via API

Jetpack is one of those plugins I require on all of my sites. It’s a beast of a plugin with many modules. The two modules I always use are Stats and Monitor. From time to time I receive down notifications from Jetpack Monitor for a website which is no longer active. In those cases I…

Story About Bad Backups

Backups are typically only considered when you need them. That’s generally not the best time to find out if the backup is any good. Any good backup system also involves some trial runs to make sure the restores work. If you can’t restore from your backups, then you don’t have a backup. No one is immune…