Introduction to WordPress Development: A proposed learning path

One of the Training Team goals for 2023 is to “release a roadmap of new content (that isn’t tied to WP releases/features)”. To do this, we need to look at how we can plan out specific Learn WordPress content that is curated in a way that creates a learning journey for the user.

Last year, I started thinking about what skills and knowledge a WordPress developer should have. That list turned out to be quite long, but what did become clear was that defined pathways of learning are needed, in order to plot developer-focused content for Learn WordPress.

After spending a few months creating content for Learn WordPress, I’ve started narrowing down these learning paths for the new WordPress developer. In my estimation, there are generally three “levels” of knowledge and experience, namely beginner, intermediate, and advanced.

What defines the beginner level?

The beginner level can be defined as the fundamental knowledge that a new WordPress developer should know, from having no knowledge to being able to develop with and extend WordPress.

To put it another way, if you could send someone to a WordPress university for a three-year period of study to earn a degree in Developing with WordPress, what is the fundamental knowledge you would want them to have learned by the end of their first year?

It should be noted that there are two types of developers that this definition could apply to.

The primary audience for this content is developers who are new to extending WordPress. Perhaps they have built blogs and sites using no-code tools, and now they want to broaden their knowledge of how to build and extend WordPress. They may have some coding experience elsewhere, but they have never coded specifically for WordPress.

The secondary audience for this content is developers who are experienced in other development platforms. They could have come from building websites and web-based apps using other programming languages, content management systems, or frameworks. They already understand much of the foundational knowledge needed, and now merely need to learn the WordPress way.

What does the beginner-level learning path look like?

With all this in mind, this is my proposal for the content needed to create a learning pathway for the beginner-level WordPress developer:

  1. A brief overview of how WordPress works
    • The WordPress file system
    • Creating basic things like posts, pages, and users, and changing settings
    • Permalinks, and how they work with the rewrite module on both ApacheApache Apache is the most widely used web server software. Developed and maintained by Apache Software Foundation. Apache is an Open Source software available for free. and NginxNGINX NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers. https://www.nginx.com/.
    • How a dashboard page request loads
    • How a front-end page request loads
  2. The programming languages of WordPress
    • HTMLHTML HTML is an acronym for Hyper Text Markup Language. It is a markup language that is used in the development of web pages and websites.
    • CSSCSS CSS is an acronym for cascading style sheets. This is what controls the design or look and feel of a site.
    • JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.
    • PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. http://php.net/manual/en/intro-whatis.php.
    • MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/.
  3. WordPress development fundamentals
    • Setting up a local development environment
    • Action HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. and FilterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. Hooks
    • The WordPress database
    • WordPress coding standardsWordPress Coding Standards The Accessibility, PHP, JavaScript, CSS, HTML, etc. coding standards as published in the WordPress Coding Standards Handbook. May also refer to The collection of PHP_CodeSniffer rules (sniffs) used to format and validate PHP code developed for WordPress according to the PHP coding standards.
    • Enabling the debug.log
  4. An introduction to developing WordPress themes
    • Classic themes vs blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. themes
    • Theme requirements
    • Templates and template parts
    • The WordPress Template Hierarchy
    • Classic themes – Template tags and conditional tags
    • Block themes – patterns
    • Block themes – theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.
    • Enqueuing CSS and JavaScript
    • Custom functions
  5. An introduction to developing WordPress plugins
    • PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party requirements
    • Creating custom post types and taxonomies
    • Using post metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.
    • Enqueuing CSS and JavaScript
    • Introduction to developing plugins securely
    • Preventing common vulnerabilities
  6. An introduction to Roles and Capabilities
    • How to create and apply user roles
    • How to create/modify/remove capabilities
    • How to check user capabilities
  7. An introduction to the WordPress REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/.
    • Using the WordPress REST API
      • How to make an APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. request, differences between GET, POST, PUT, and DELETE
    • Interacting with the WordPress REST API
      • available endpoints, schema, authentication, creating, updating, and deleting data
    • The WordPress REST API under the hood
      • overview of how the REST API works, detail about design decisions
    • Extending the WordPress REST API
      • creating custom routes and endpoints
  8. An introduction to developing WordPress blocks
    • Using JSX vs vanilla JavaScript
    • Setting up the block development requirements
    • Building your first simple block
  9. An introduction to WordPress multisiteMultisite Multisite is a WordPress feature which allows users to create a network of sites on a single WordPress installation. Available since WordPress version 3.0, Multisite is a continuation of WPMU or WordPress Multiuser project. WordPress MultiUser project was discontinued and its features were included into WordPress core.https://codex.wordpress.org/Create_A_Network.
    • Setting up a Multisite network
    • Managing a Multisite network
    • Building plugins and themes that support multisite
    • The differences between developing for multisite vs single site
  10. Debugging in WordPress
    • Enabling the built-in WordPress debugging options
    • Examining the state of your PHP code using error_log and print_ror vardump
    • Examining the state of your JavaScript code using the console object
    • Popular debugging plugins
      • https://wordpress.org/plugins/debug-bar/
      • https://wordpress.org/plugins/query-monitor/

Next Steps

My next steps would be to review the content we already have on Learn WordPress, as well as those items in production, against this list, to see what is already there, and what still needs to be created.

However, I’d first like to get some feedback from the Training team and the wider WordPress development community. Does this list cover the fundamental knowledge the new WordPress developer needs? Are there items here that might not be necessary? Are there any items that you might consider more important than others?

Please leave your feedback in the comments before Tuesday 21 March 2023.