Software Engineering in WordPress, PHP, and Backend Development

Category: Articles (Page 123 of 258)

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

Get Started Internationalizing WordPress Projects

Internationalizing WordPress projects are arguably more important now than ever. With WordPress’ market share as large as it is, it’s never been used by such a wide audience.

To that end, it makes sense that a project accessible to people all over the world can be translated into the various languages said people use.

I think it’s important to make a clear distinction, though:

  • If you’re working on a project for a particular client and you know that it doesn’t need to support internationalization, then building the project for that specific language is okay.
  • If on the other hand, you’re working on a theme or a plugin that will be distributed in one of the public repositories or marketplaces and has the potential to be used by people who speak a language different than your own, then your should be internationalizing your project.

In the past few years, it’s become easier than ever to internationalize WordPress projects. And in my latest set of articles for Envato, I’m walking readers through exactly how to do it.

Continue reading

Object-Oriented Partials in WordPress

Partials in WordPress, regardless of if they are part of a plugin or part of a theme, can help maintaining a project much easier (let alone building a project).

But if you’re working with them to help drive your settings pages or your WordPress administration pages, part of working with them is making sure they are adequately represented on the server-side, too.

Generally speaking, this is usually referred to as the domain logic or may even be thought of as part of the “model” or “controller” code when thinking regarding MVC. Of course, this isn’t MVC, and I’m no fan of trying to apply patterns where they don’t fit.

My point, though, is that I’m talking about object-oriented classes that are responsible for managing data and handling coordinating information rendered in the partials and how the user interacts with it.

Continue reading

Partials and Templates in WordPress

Templates in WordPress is a topic that seems to come up for discussion every now and again. There are plugins aiming to make it possible, too. And though I’m intrigued by the idea, I’ve yet to go all in on it.

Timber for Templates in WordPress

That’s a topic of discussion for another post, though.

Over the last few years of writing plugins for others, one of the things I’ve found to be one of the easiest things to do is to separate our views into partials.

Continue reading

Installing PHP CodeSniffer with WordPress

In previous posts, I’ve talked about using PHP CodeSniffer with WordPress, how to install it (in a variety of ways), and why I think it’s important.

In continuing the series on code smells and writing higher quality code for WordPress (by avoiding code smells), I followed-up the initial article with two other pieces. The first article covers a high-level definition of code smells.

The second article, which I outline below, talks about how to install PHP CodeSniffer with WordPress starting from ground zero.

Continue reading

The Clean Architecture and WordPress

For the past couple of weeks, I (along with others in the comments) have been talking about things such as testing, namespaces, and more. When building well-architected, testable, and scalable software, these are all relevant topics.

But they only scratch the surface of some of the many ways in which we can manage project architecture.

Developers have been experimenting (and using) WordPress with a variety of different tooling such as different web servers (like IIS – good luck :) and with different database servers.

And when it comes to dealing with various types of third-party dependencies like database servers, creating a proper architecture is key to making sure your code is portable between environments and for other reasons, such as testing.

Continue reading

« Older posts Newer posts »

© 2026 Tom McFarlin

Theme by Anders NorenUp ↑