In the previous post in this series, we revisited the topic of working with Ajax in WordPress. Ultimately, the goal is to improve upon a previous series that was run on the site a few years ago.

To reiterate, it’s not that the techniques taught in the original series were wrong, but it’s that software changes over time so it’s always good to revisit concepts that were covered years ago and try to update them to something that’s a bit more current and more resilient for our development efforts.

Recall from the previous post, we looked at the following comment from the original series:

We’re going to give a very brief overview of what Ajax is, how it works, how to set it up on the front, and understanding the hooks that WordPress provides. We’ll also actually build a small project that puts the theory into practice. We’ll walk through the source code and we’ll also make sure it’s available on GitHub, as well.

And in that post, we reviewed some advanced ways to incorporate the WordPress Ajax API into our projects using procedural programming. In this post, we’re going to take the code that we wrote in the first part of this series and refactor it so that it uses an object-oriented approach.

Ultimately, the goal is not to make a case why one paradigm should be used over the other; instead, it is to show how we can achieve the same functionality regardless of the approach that you choose when building your plugins.

Planning the Plugin

Before we get started refactoring the code, something that we need to consider is how we’re going to lay out the various files. After all, part of the process of beginning a new project—or even jumping into an old one—is planning how work is going to be done.

For this particular plugin, we’re going to need the following:

  • a bootstrap file that’s responsible for initializing the main class and starting off the plugin
  • a class that’s responsible for loading the dependencies such as the JavaScript
  • a class that serves as the main plugin class

As you can see, there’s not too much that we need to do to the plugin. We’ll also be re-organizing some of the files to have a consistent directory structure, and we’ll make sure to properly document all of the code so that it follows the WordPress Coding Standards.

With that said, let’s get started.

Organizing the Files

Before we get into writing any code, let’s go ahead and do the following:

  1. Create an assets directory.
  2. Create a js directory that will be located in the assets directory.
  3. Move frontend.js to the js directory.
The assets directory

The reason for doing this is that we’re moving into an object-oriented style of programming. Part of this includes organizing our files so that they follow conventions often considered to be packages.

In our case, the assets directory includes all of the things necessary to make the program run. For some plugins, this could be JavaScript, CSS, images, fonts, and so on. In this instance, we have a single JavaScript file.

The Dependency Loader

Next, we need to introduce a class that will be responsible for loading the dependencies for our project. For this particular plugin, the only dependency that we have is the JavaScript file that we just placed in the assets directory.

Part of object-oriented programming is making sure that each class has a specific purpose. In this case, the class we’re about to introduce will be responsible for loading the JavaScript using the WordPress API.

Let’s start by creating the basic structure of the class: