Software Engineering in WordPress, PHP, and Backend Development

Category: Articles (Page 89 of 258)

Personal opinions and how-to’s that I’ve written both here and as contributions to other blogs.

The Repository Pattern Primer

Whenever you’re working on a larger project that’s based on WordPress, the odds that you’re going to be working with more than a single data source – that is, the WordPress database – are higher than normal. For example, you may be working on a project that has to coordinate information from:

  • the WordPress database,
  • a help desk ticketing system,
  • a content importing system,
  • another third-party API,
  • and possible more.

And when this happens, it can become a bit cumbersome to write code that makes it easy to retrieve information from those different places. This what developers usually talk about when they refer to dealing with “layers” in their application. That is,

  • there are layers for presenting information to the user,
    layers for handling business logic (or domain logic),
  • layers for communicating with APIs,
  • and layers for storing data.

Honestly, you don’t have to have a variety of data stores to watch to create a layer that makes it easier to send and retrieve data from the database, that’s just when it’s more common. You can just as effectively work with a single data store, like the WordPress database, when implementing the repository pattern.

Regardless, if you’re building a larger website, web application, or plugin, implementing the repository pattern is something that can pay dividends in maintenance, clarity of code, and separation of concerns.

But how might this be implemented within WordPress? It’s not terribly challenging, but first, it’s worth reviewing a repository primer before jumping into any code.

Continue reading

Managing Work on Vacation (Managing The Tension)

Two weeks ago, I was on the first major family vacation my family, and I have taken since we’ve had kids. This isn’t to say we haven’t taken trips, gone to the beach, and things like that but we haven’t done anything quite like this.

In short, we spent a week at Disney World – and that’s fun, sure – but when you see it through the eyes of a five-year-old and a three-year-old, nothing can top it.

Managing Work on Vacation

My girls seeing the Magic Kingdom for the first time.

And it’s not even that I’ve never been there before, you know? It’s when you go and experience all of the attractions with your kids who have seen all the Disney movies, cartoons, etc., and then getting to see things like that come to life.

The purpose of where I’m going has doesn’t really have to do with the details of our trip. Yes that was fun and yes I’m glad I went, and we’re already talking about going back before our youngest is too old to get into the magic that comes with visiting the place.

But there’s a whole thing about trips like this that are directly related to balancing work-family-life, right? Ultimately, it has to do with managing work on vacation and the tension that comes with it specifically if you’re self-employed (because that’s what I know).

I doubt I’m going to share anything new, but I thought it might be worth sharing my personal take on what it was like to completely disconnect for a week and what it was like coming back to all things waiting.

Continue reading

How To Make MySQL Globally Accessible (From MAMP)

I recently walked through how to make WP-CLI globally accessible across your system (assuming you’re running macOS or a variation of Linux).

I’ve also talked about various things as it relates to using MAMP Pro for WordPress development. Naturally, one of those tools is also MySQL; however, it’s one that is often treated as a “set it and forget it” application.

But I’ve recently started working on a project that requires a bit of automation as it relates to syncing the development and the staging databases. And since this is scripted, it assumes that MySQL is globally available.

If the only way you’ve installed MySQL is via MAMP (or perhaps another similar package), then you’ll likely need to make MySQL globally accessible on your system.

Here’s how to do that.

Continue reading

Social Media Strategy: For Real? (No, But I’ve Tools)

Late last year, I started a new site in which I was aiming to talk about productivity, time management, and the like. The original announcement post covers much more than I’ll bother sharing here.

Several things have come from this blog, though. For example, I get tweets, emails, and other forms of [sometimes creepy but maybe just kidding] messages about how I run my business, how I manage my time, what applications, sites, services, and so on that I recommend.

Ultimately, the site didn’t perform as well by both by internal metrics and by what I’d hoped, but I’m still receiving some questions about how I manage certain things.

And given that this blog is still geared towards A Perspective on WordPress Development (which may change a little in the near future), I thought why not fold up some of those topics on productivity into this blog?

For some readers, it’s not going to be the content you’re used to seeing but for others I hope it answers some of the questions I occasionally receive.

That’s a bit of a longer introduction, sure, but it gives you a heads up on if you want to keep reading or not, right?


When it comes to social media, people have some social media strategy that they try to follow, implement, or whatever to garner followers (which can be lame in my opinion but I do get it from a marketer’s perspective).

I’m not writing about any social media strategy. I’ll share the tools I wire up to make sure I’m tracking what I’m interested in and sharing what I want to share.

So here’s my social media strategy, if you even want to call it that, and the tools I use.

Continue reading

Singletons in WordPress, Revisited (A Time and a Place?)

Before I start a post talking about using singletons in WordPress (or, more appropriately, the Singleton Pattern), I want to make sure that you read the following two articles:

Both of these articles provide immensely valuable perspective on this pattern and the dangers of using it whenever using it throughout our work in WordPress; however, does that mean we should completely avoid them?

I don’t think so.

Then again, I also recognize that the articles aren’t saying to completely avoid them. They are giving strong cases for how to use them and the dangers of using them should you opt to do so.

And though I’ve definitely used them in the past, I’ve generally stopped. However, I recently came across a use case for a project in which I think it’s acceptable.

Continue reading

« Older posts Newer posts »

© 2025 Tom McFarlin

Theme by Anders NorenUp ↑