WPStagecoach saved my life

pink carriage with brown horse

Quit messing around with lesser staging processes and get the real deal.

I don’t mean to be too glowing or make this seem like some infomercial endorsement, but I do really think it saved me from having a heart attack the past couple days. I’ve been using InfiniteWP to manage most of my stable of WordPress sites, and it’s served me well for managing updates and backups, and is even handy for migrating websites from one host to another. It’s well worth the $120 or so that I paid for it a few months ago. It’s staging features aren’t really that great.

Part of the problem is that it only wants to install the staging site as a subfolder of the main site. It also makes a copy of the database on the production database, it just uses a different table prefix. I shouldn’t have to tell you why this is not great from a performance and quota standpoint. The other problem is that it doesn’t provide much information when things go wrong. Ideally, I want my staging sites in separate subdomains, but IWP just can’t do this. And the documentation is very mum about this. I have a support ticket open with them right now to figure out why I was unable to clone a particular client site, and to make sure that this paragraph is correct. What I can tell you is that I spent days trying to get a proper staging site setup for my client using IWP.

It’s not all their fault. I’m taking over a project that seems to have been abandoned by the original developer, and there were many problems with the site that may have contributed to the problems I’ve been having, as we shall see shortly. IWP has three staging options, on the original site, on my configured staging server, or custom FTP. I was able to clone the site to my custom staging server, but the theme didn’t operate properly. I believe this may have been a problem with hotlinked theme assets, I haven’t figured it out yet.

I literally spent days trying creating subdomains and updating DNS on the client site, and couldn’t figure out why IWP kept giving me “error: check your hostname” when I tried to update things. I figured it was a DNS propagation error between the server hosting my IWP and the client’s host. I usually only work on sites I host directly, but this was the first time I actually had to use the staging features. I was getting very anxious. I had wasted several days was already dealing with an irate client, and was starting to get a panicked feeling when working on the project.

So I decided to go another route and explore some other options. I read through several blog posts on WordPress staging sites, and one name that came up several times was WPStagecoach. And it was only $12 for a month, so I signed up for a trial and had the staging site up in less than an hour. No kidding.

The setup process was impressive. Getting the plugin installed and activated was pretty standard, and creating the staging site was very user friendly. It started off by scanning the site for large files, and found a backup archive, which it asked to exclude. Then it starting creating a tar file of the site to move to staging, and showed me a status percentage as it did so. This was very much needed considering IWP had been “working” for hours without so much as a log update. After the tar process was completed, I did get an error that the archive was missing files, and was asked whether I wanted to abort, retry, or “proceed fearlessly.” I retried, waited another five minutes, and got the same error, so I went ahead and pressed proceed. Another five minutes, and BAM. There was my staging site, and it looked perfect.

And one thing that really impressed me was that after the creation of the staging site, I was given a list of errors that WPS had found, mainly places where the site’s URL was hardcoded in the theme templates. These are likely why I had the rendering issues on my previous staging attempt. So now I have a list of files that I need to target, as hard coded URLs will play havoc with my development environment as well. And this feature really shows how WPStagecoach really shines as a specialized product.

WPS hosts the staging site on their own servers, giving each site their own subdomain. I got ten with my account, which is way more than I’m going to need anytime soon. So now I can proceed with the next step on this project, which is getting our MemberPress module up and running. Then I’ll be able to see if pushing changes back to the live site is as easy as creating it in the first place. If my experience so far is any indication, it’ll be a sinch.

Refining the design process

assorted-color abstract painting

What got me here won’t get me there

Since I was able to get my Substack post out on time yesterday, my focus has turned to my client’s WordPress project. I almost used the word “consulting” for a moment, but I am way too much involved in the design of the site to call it consulting at this point. And I’m having a hard time. Cause despite my familiarity with the tech stack involved in web hosting and CMS systems, my design skills really haven’t moved past the early days of the web.

Just look at this blog, for example, it’s focused on content, I’m still using a basic WordPress theme, and it’s got no color whatsoever. Part of that was intentional, so that I could focus on content generation and not get hung up on design presentation, but it’s hamstrung me. Part of my spiel whenever I talk to people about these project is about the separation of content and presentation. I tend to focus on content, structuring data, changing it. Design is not really my strong suit. It’s much more of a creative art that I’ve struggled with.

When I was in my twenties, I used to love to play around with Photoshop, making designs with filters and creating awesome images. I’m pretty good with typography as well. When it comes time to laying out text and images, and putting together a color scheme on a web page though, I just don’t know where to start. And therein lies my current problem.

The client came to me with a website that had been fully designed and rolled out between 2016 and 2018. It didn’t look like it was up to the design standards, even of that era. I can’t even put my finger on why I know that, but it just does. The site was broken. The first thing I saw when logging into the admin console was that it had a huge mess of plugins, and I couldn’t make heads or tails of it. I needed to figure out what was essential and what we could get rid of. And there were over twenty five hundred registered accounts in the system. Most of them looked like spam. Sigh.

I never ever ever make changes to a client site without testing it in a staging site, so that was the first order of business. I use Infinite WordPress to manage my sites, so the first thing I did was installed that plugin to connect it to my management console, then I started a backup. After we had that under control I cloned the existing site to staging and got to work. It was a mess. There was a lot of content on the site, over two hundred pages and posts, but the site used custom posts types and fields, and had some sort of content controls that were supposed to paywall the content and was just broken. I spent what must have been a week just trying to inventory the plugins to figure out which ones we could disable to speed things up.

The only other production change that I allowed myself was for analytics. I checked the console a couple of days later and found that the site was getting tons of hits. Apparently the blog content had been indexed by Google, and a lot of people were getting referred to it. Converting those hits into leads was now the priority. The site was still broken though. The navigation didn’t work, so most visitors were falling off. Furthermore, while checking the contact forms to see what emails were being used, I discovered that email for the domain wasn’t working. At all.

I was able to get the email up and running, but it took days to figure out where the problem was and to move the DNS records over to my reseller account. Delving into the theme itself, it appeared that the designer had just cloned the WordPress TwentySixteen theme and started editing it directly. I’m not sure if WordPress had child themes back then, but they had just dumped a bunch of custom PHP functions right after the existing ones, and the template codes were full of SQL queries into the custom fields, which didn’t jive with what the plugin documentation called for. I really didn’t want to spend however much time combing through this code to refactor it. So I recommended to the client that we start from scratch.

I’ve got an Envato account that I subscribe to, my process just involves finding a good theme that fits the tone of what I’m going for, throwing it up on the site, and swapping the boilerplate content with custom copy. And I don’t like writing copy for clients. Or, I should say I’ve avoided doing that in the past. It starts coming close to marketing, which I’ve had an aversion to. I’m working on overcoming that aversion, at least for myself and my projects, but doing that level of work for clients requires a level of intimacy with the project/product that I haven’t had the time for. I’d rather outsource it, and that’s just what I did with the last project that I was involved with.

I’m not going to take that route this time, we’re going to plow through this and get it done, come hell or high water.

One of the problems that I’ve found working through this project is that I tend to try and shape my content to fit the boilerplate in the themes I use. It isn’t working. My client gave me a document with the content that they wanted on the page, and my brain seized up looking at it, trying to figure out where to match it to fit. It’s not going to work. I’m going to spend some more time today going over it again to see if I can provide some structure to it, then I’ve got a work session with the client tomorrow to really try and break it down. I don’t think that we’re going to be able to do this part in WordPress directly. I may need some mind mapping tools or something else to make it work.

Pressing up against the limits of my abilities is going to take some work. We’ve got to bootstrap this site into production to get things moving. Maybe then we can engage a professional to help tune things.

For now, that’s me, designer, developer, editor, admin. While I have some downtime today, I’m going to do some research and see if I can find any other resources to help refine the process.