Select Page


Project Tasks

  • Convert a traditional e-commerce website to a subscription-based website with irregular renewal times.
  • Create a fully-automated email campaign that welcomes new subscribers and reminds existing subscribers of their renewal one week before.
  • Create a “virtual gym” that restricts digital content (videos, PDFs, and web pages) to paid subscribers.
  • Inside the “virtual gym” members area, create a custom, mobile-friendly calendar that displays all upcoming virtual gym classes detailed information about each class, as well as a link to join via Zoom.

Note: the “virtual gym” renews regularly (every 30 days) while all other fitness classes renew following the same irregular schedule.

Project Solution

Transitioning from Traditional E-Commerce To Subscription-Based E-Commerce

The first step of this project was systematically converting each traditional e-commerce product available on the existing site to a different product type. This new type enables subscriptions and automatic renewals.

Once all the products were converted, a new plugin was added to define a custom renewal schedule for all in-person fitness classes. Once that custom schedule was defined, it could then be assigned to each of the newly converted product types.

With this system in place, the renewal schedule could be defined once and applied to any or all products on the site. The calendar could even be edited, just as long as the changes occur beyond the soonest upcoming renewal date. Changes to the soonest renewal date can be taken care of manually.

Fully-Automated Email Campaign

This was another plugin that enabled site administrators to write their own emails on the WordPress backend. Emails can be saved as a template and use a collection of variables for subscribers’ names, information about their specific class, orders, account information, and more.

I wrote over 100 custom emails to be fired to subscribers for each class available for the season. It was a tedious process, but once it was complete, customers received relevant emails about their fitness classes just seconds after they signed up and a week before their subscription renewed.

This solution enabled admins to add to the existing campaign and send global emails to all members of the site when specific conditions are met. There is also functionality to send single one-off emails to all members. This is useful for news, updates, and announcements.

Virtual Gym

The first step for the virtual gym was to create a few new things. First I created a login page that matched the branding and the style of the rest of the site. Next I created the members area and customized the members area to match the existing branding.

Once the members area was created, two new areas needed to be created: the virtual gym content area (containing videos, PDFs and pages) and the virtual gym calendar (only viewable by members, as it contains links to join paid Zoom meetings).

I ended up writing a custom WordPress plugin to handle the virtual gym calendar. Each class was a custom post type that included information about the start time, the fitness coach teaching the class, general information about the class, and a link to join the Zoom meeting.

Once all information was saved about each fitness class, it would automatically appear in a calendar that was embedded into the protected page in the members area. The calendar was powered by JQuery, allowing for mobile (touch-friendly) functionality, as well as dynamic “accordion” style animations. The calendar consisted of blocks containing basic name and date. Touch the class you’re interested in, and more information, including a Zoom link would drop down below your selected class.

Check out more articles

How to Generate a Ranger Config File

ranger --copy-config=all This will copy all the default config files from /usr/local/lib so you can make edits without messing anything up. Huge shout out to for explaining this and so much more. Took me a...

First Open Source Contribution

Surprise! I genuinely did not plan on making my first ever open source contribution today. In fact, I didn't plan on a lot of things happening this week at all. I recently got an awesome opportunity to work on a site that is being hosted on a platform called Pantheon,...

How to Exclude Specific Posts and Pages from WP_QUERY

For the sake of having something to work with, let's suppose we've got the following query:In this query, inside the $args array, there's a special parameter that allows you to exclude specific posts and pages from the query. This parameter is called post__not_in and...

Configure SSH For Password-less Connections

Preamble I'm slightly embarrassed to admit this, but it was a long time before I figured out how amazing this little file is and how exactly to put it to good use. The file I'm talking about is the SSH config file. By default, when you first connect to a server via...

WordPress Site Stuck in Maintenance Mode

Plugin Error Code 500 During Update While I was updating a WordPress plugin locally, something happened on my local server to trigger a 500 error code as the plugin was updating. On the frontend, I refreshed the page and was greeted with "Briefly Unavailable for...

Creating a WordPress Plugin Downloader

How it Started I was recently tasked with the challenge of creating a WordPress theme generator. The idea being, instead of writing your style.css file from scratch, you'd be able to just answer a few simple questions about how you'd like your theme set up, and those...

Fix Audio on XFCE Chromebook

The Problem After moving from GalliumOS to Xubuntu, I noticed that playing YouTube videos on both Firefox and Chromium would result in decent playback for a few minutes, but suddenly the audio would turn into a solid beeping tone while the YouTube video displayed the...

Adjust Trackpad Sensitivity XFCE

xinput set-prop "Elan Touchpad" "Synaptics Finger" 1 1 1 What are the values 1 1 1? This sets the sensitivity as close to the original ChromeOS as possible. Larger numbers will decrease sensitivity of various aspects. I never looked into which individual value...

Fireworks (Short Film) About the film Year: 2020 Director/DP: Tim Searfoss Writers: Matt Jones, Tim Searfoss Sound Mix: Matt Jones

Hosting Multiple Sites Using LocalWP

I've done a write-up on hosting local WordPress sites before, but I definitely prefer this method over the previous one. If you've never tried hosting multiple sites using LocalWP, then I'd encourage you to check it out. I've had really bad issues with it in the past,...

Looking for a place to host your next project or design?

Use this link to get your first 4 months of WP Engine for free: WP Engine – Plans (With 4 months free)