Getting Started with WordPress Development: A Developer’s Guide

By Cameron Pavey

Are you a web developer who wants to learn how to work with WordPress?

Chances are, you’ve heard of WordPress at some point in your development career. Maybe you’ve even used it to build some sites a few years ago. If you haven’t used WordPress recently—or at all—you may be surprised by some of the recent advancements. Over the last few years, WordPress has taken many steps to modernize and offer a flexible, attractive solution for developers looking to build websites. If you are considering using WordPress to build a website in 2022, this quick-start guide is for you.

WordPress is a free, open source content management system (CMS) written primarily in PHP and JavaScript. Traditionally, WordPress relied heavily on PHP, but relatively recent developments have been shifting things so that JavaScript plays a much more significant role. PHP powers core functionality, such as the loop, authentication, and database access, and JavaScript is responsible for client-side interactions, plugin interactivity, and some of the key functionality relating to Blocks. Though PHP and JavaScript have a colorful history, they remain the building blocks of the web: according to W3Techs, seventy-seven percent of sites are powered by PHP, and ninety-eight percent of sites use JavaScript in some form.

It’s estimated that as of 2022, there are four hundred fifty-five million sites built using WordPress. As a developer, you might wonder why so many sites use the popular CMS instead of an alternative, and whether or not WordPress is a good fit for your projects and websites. There is no single cause for WordPress’s popularity. Instead, several factors have contributed to its current position, including ease of customization, excellent out-of-the-box performance, and a highly robust feature set that makes it a good candidate to run a wide range of different types of sites, including blogs, business sites, and even e-commerce sites.

When you consider the functionality that you get by using a pre-built CMS like WordPress as the basis of your site, it makes vanishingly little sense to build something from scratch, forgoing the features, stability, and security that WordPress has refined over the years. However, a crucial thing to consider when using a pre-built solution is the degree to which you can customize it. WordPress meets this criteria by offering an assortment of powerful customization options, such as Plugins and Themes. With modern WordPress, you also have freedom in how you build your site. You can still use the more traditional PHP-heavy approach, or you can use WordPress as a headless CMS by leveraging the REST API. This would, in turn, allow you to build a decoupled JavaScript-powered frontend application, or even a mobile application, powered by your WordPress site. This degree of freedom and customization is a significant part of why WordPress is so popular amongst developers.

Before getting into more detail, it will help to quickly disambiguate some terms. WordPress is a PHP application that you can download, run, and use as the basis of your site. It provides you with a suite of functionality, including content management, persistent data storage, user account management, and robust Theming and Plugin systems. There are two primary domains associated with WordPress.

WordPress.org is where you can download the source code and view the developer documentation for WordPress.

WordPress.com, on the other hand, offers a complete hosting solution for your WordPress sites, and comes with WordPress pre-installed.

With that clarified, in this article, you will learn about the current state of WordPress, as well as key things that you need to know to be an effective WordPress developer in 2022.

What Do Developers Need to Know to Get Started with WordPress?

WordPress has been around for a long time and has recently undergone some exciting changes that have revolutionized how developers can work with it. As such, even if you have used it in the past, it can help to have a quick re-introduction to the core concepts you will be working with as a WordPress developer.

General Structure

A few key components make up most WordPress sites.

The Database

WordPress officially supports MySQL and MariaDB as database engines. The database will store all of your site’s content, configuration, and dynamic data.

WordPress Core

This is the source code for the application, and encompasses all of the actual core functionality of the WordPress CMS itself. This can be downloaded from WordPress.org, or can come ready-installed with your hosting. You won’t typically need to modify the WordPress core, as you can satisfy your customization needs using Plugins and Themes.

Plugins

Plugins are pieces of code you can create yourself, or download from sources such as the WordPress Plugin repository. Plugins can introduce new functionality and behavior to your site.

Themes

Themes allow you to customize and control the visual aspects of your site. The Theme will determine the look and feel of the public-facing website that your users see. Like Plugins, you can create Themes yourself, or download premade ones.

It’s worth noting that there are two main types of themes, and two intermediate sub-types that exist between the main types. The oldest type of themes are the traditional Classic Themes, which you may be familiar with if you have previously worked with WordPress. With Classic Themes, users can typically only edit parts of the site that derive their content from the Post data, while the Theme author may statically encode other site features into the Theme. As of WordPress version 5.9, Block Themes, which allow users to edit all parts of the site through the block editor, are the default WordPress themes. Block Themes allows you to edit any part of your site graphically using the block editor and the site editor. New Block Themes can be implemented manually, by writing code, or codelessly, by using the editors to organize and configure the blocks and templates.

Between Classic and Block Themes, there are also Universal Themes and Hybrid Themes. A Universal Theme is simply a Block Theme that has customizer options, which are not enabled by default with Block Themes. A Hybrid theme is a Classic Theme that adopts full-site editing features, such as the Template editor or theme.json.

Hooks

Hooks allow you to register custom functions that WordPress will utilize at specific points during the execution of code in the Core, Themes, or Plugins. Hooks come in two varieties, Actions and Filters. Actions allow you to perform a side-effect in response to one of the supported events. WordPress Core exposes a number of actions that you can leverage, but you can also use plugins to introduce new actions to integrate with. For example, consider the popular Advanced Custom Fields Plugin. It introduces some actions of its own that you can use to interact with the Plugin.

Filters, on the other hand, let you intercept and modify values. As with Actions, there’s a comprehensive list of supported Core filters.

These concepts comprise the majority of what you will interact with as a WordPress developer. Most of the time, your work will be centered around customization of sites and adding or modifying functionality, either through Themes or Plugins. As such, the concepts that facilitate these activities deserve a closer look.

Customization Options

Depending on the type of customizations and functionality you want to add to your sites, there are a few different ways you can go about it. Customizations are broadly split into two rough groups: visual changes facilitated by Themes, and functional changes implemented with Plugins. This line is not absolute, and you can achieve changes of either type in various ways, but it can help delineate these broad categories while building your mental model of how to work with WordPress.

Plugins

Plugins are essentially modular code that you can install into one or more WordPress sites. If you find yourself making similar customizations across multiple sites, it might be time to encapsulate those changes in a reusable Plugin, and if you want to make a behavioral change or add some new functionality to your site, Plugins give you the means to do this. There is no single “right way” to build a plugin, as the implementation will vary depending on what you are trying to accomplish.

To create your own plugin, there are a few things you must do. First, create your Plugin in a directory such as wp-content/plugins/<plugin-name>/. Next, within this directory, you can create a PHP file and add the following content to the top of the file:

<?php
/**
* Plugin Name: your-plugin-name
* Plugin URI: https://www.your-site.com/
* Description: Details about your plugin.
* Version: 0.1
* Author: your-name
* Author URI: https://www.your-site.com/
**/

This block describes the plugin to WordPress, and the details you specify here dictate how the plugin is listed in the Plugins menu of the admin panel. Within this PHP file, you can use Hooks to interact with the WordPress core, using Actions to trigger side effects, or Filters to intercept and modify values.

For example, if you wanted to implement a plugin to obfuscate email addresses on your site and deter bots that scrape public sites for email addresses, you could do that. By leveraging filters such as ”the_author_email” and ”get_comment_author_email” (as well as any other filters that deal with data where email addresses might be included), you can intercept and modify the values to make them harder for bots to read, while ideally still keeping them readable for your users. This might look something like:

$filters = [“the_author_email”, “get_comment_author_email”]; // and any other relevant filters

foreach($filters as $filter) {
  add_filter($filter, “obfuscate_email_callback”);
}

function obfuscate_email_callback($email) {
  // logic to obfuscate email address
}

This is a basic example, but the scope of what you can do with Plugins is immense. When building Plugins of your own, be sure to keep the official best practices in mind, including things such as prefixing all of your functions and variables to avoid collisions, or better yet, using classes. Other considerations include separating your admin and public code, guarding admin code appropriately, and other things in this vein.

Themes

To customize the visual appearance of your site, you can create a Theme. As mentioned before, WordPress offers two main types of Themes.

Classic Themes

In the past, WordPress themes relied heavily on PHP and, in some cases, exposed configuration options to give the user some fine-tuning, such as custom logos or colors. This older style of theming is now referred to as Classic Themes. While Classic Themes are still available, they’ve been superseded by Block Themes.

Block Themes

Block Themes give you significantly more flexibility in how you can customize your site, and often require less code to do so. There are quite a few low-level differences, which you can see described in the documentation, but in short, Block Themes are more modular and flexible than Classic Themes. The Block Theme system was developed to improve scalability and performance and is the future of WordPress theming.

While Classic Themes rely heavily on PHP to generate the markup of a given page, Block Themes operate on a different principle. Block Themes use HTML-based templates that can include blocks, where a block is specified using a special HTML comment like so:

<!-- wp:site-title /-->

This would include the site title block in whichever template you include this line in. Blocks are a powerful tool when you’re building sites. In addition to the built-in blocks, you can also make use of some of the many third party blocks available online, or build your own custom blocks to satisfy your client’s requirements.

Your Theme can specify multiple templates, such as homearchive, and 404, each of which will be used in the appropriate situations, as described by the Template Hierarchy. You can create templates in one of two ways, either manually, by writing the markup yourself, or by using the Site Editor.

If you are looking to create a new WordPress theme today, you’d be doing yourself a disservice if you didn’t check out Block Themes. In addition to the official resources for Block Themes, there are also a multitude of third-party tutorials to help you get started.

Beyond customization, one important aspect of working with WordPress sites—or any site—is performance tuning. One of the most significant factors in your site’s performance is the quality of your hosting provider. WordPress sites tend to be public, so top-notch performance is crucial not only for the user experience but also for other factors, such as search engine optimization.

Hosting

No matter how good your site is or how finely you’ve tuned its performance, a subpar hosting provider can let you down. When it comes to WordPress sites, there are four main things that you want to look for in a hosting provider.

Performance

Hosting providers can impair your site’s performance in a number of ways, typically caused by either latency issues or inadequate backend resources. Although the WordPress core is heavily optimized already, if the PHP server backing it isn’t up to the task, your users can suffer from a diminished experience. To mitigate this, it’s important to make sure that your provider dedicates adequate resources to support your site’s anticipated traffic and needs.

Security

When you use a third-party hosting provider, you trust them with your data and traffic. Nothing good can come from your provider failing to keep their servers patched and up-to-date. Indeed, one of the key benefits of using a managed service is that you don’t have to do these updates yourself, so you need a provider who takes this responsibility seriously.

Cost

Cost is self-explanatory: it doesn’t matter how good a host is if they’re prohibitively expensive for you. Finding a balance between cost and these other factors can be tricky. Providers offering their services for too-good-to-be-true prices often cut corners in other areas to make such low costs possible. A common example of this is shared hosting providers that run multiple sites on servers that don’t have adequate resources to serve all the sites under load. In this scenario, if your site and other sites on the same host experience spikes in traffic, the hosting provider may not be able to provision enough resources to properly serve all of the sites on a given host server. Compare this to hosting providers who prioritize site performance by ensuring that—regardless of how the sites are hosted behind the scenes—there will always be adequate resources to handle spikes in traffic.

While cost is a factor to consider, you should be careful not to prioritize it at the expense of the other criteria.

Reliability

Finally, it is crucial to account for reliability. A hosting provider who ticks all other boxes can still let you down if they suffer from frequent outages. Unplanned outages negatively impact the user experience, leading to loss of visitors, sales, and leads.

Finding a balance between these four criteria might seem daunting, considering the number of hosting providers. It doesn’t have to be, however.

WordPress.com

When it comes to hosting providers explicitly geared for WordPress, it’s hard to beat the gold standard that is WordPress.com. A third-party benchmark found that WordPress.com not only had one hundred percent uptime during the monitoring period, but it also boasted the best performance of tested providers in any price tier, earning an “overall flawless performance”.

Wrapping Up

In this guide, you have seen what goes into making a WordPress site from a developer’s perspective. You’ve seen a general overview of the different concepts you need to be familiar with if you want to build WordPress sites and some resources you can leverage to learn more about those topics. Finally, you learned a bit about the key things to look out for in a hosting provider to ensure that you do your WordPress sites justice. If you are looking for a hosting provider for WordPress sites of any size, consider WordPress.com.