If you spend enough time with WordPress, you may very well become interested in development. No, of course not everyone will do this.
They’ll continue to use it exactly as it is:
- A blogging platform,
- Or a content management system
But just as with operating systems, desktop software, mobile apps, etc., you may find yourself wanting to build things for WordPress.
So the natural question becomes:
“How do I go about getting started with WordPress development?
And there are tons, and tons of articles available for this. There are videos, there are courses, there are seminars, webinars, and so on.
So this is not going to be another post about the 10 things you need to do to get started in WordPress.
Instead, it’s going to take a different approach.
Getting Started with WordPress
Anyone who’s involved with WordPress will tell you: It’s important to find what you like about it.
- Are you attracted to the way blogs and websites look?
- Do you find yourself curious about how the everything fits together?
- Are you curious about the foundation that stores data?
- What about introducing new functionality that doesn’t currently exist within the software?
And this is just to name a few facets of WordPress.

Green means Go, right? So get started.
But the reason I bring them up is before you can get started in developing solutions for WordPress, it’s important to understand what you really like about WordPress.
And by “really like,” I don’t mean its feature set. I mean what about it genuinely excites you.
What makes you say “Hey, I want to learn how to do that.” And when you can answer that question, then you’re ready to start developing things for WordPress.
But That Might Not Be Development!
At this risk of being pedantic, I know: Some of what I’m talking about here has more to do with design or database architecture. That’s okay, though.
At the most general level, it’s about development. All work together to ultimately form the entire software.
- Database schemas must be designed, altered, and/or maintained to make sure data management is performant.
- Application-layer code should be written such that it works well with the rest of the software. It should be extensible, and it should securely pass data to the database and to the front-end.
- Front-end code should be accessible, should provide a great user experience, and should follow solid design principles.
And this is just scratching the surface. Once you find out which part of the software really excites you, then you can pursue that in more depth.
How Do I Get Started?
If you have 50 designers and/or developers this question, then you going to get a variety of different answers.
There is no single one right way to do it.
Some of the best designers I know are completely self-taught with absolutely no background in design. Others are incredible at what they do and they are deeply educated in the subject.
Some of the programmers I know can run circles around some of the brightest people I know, and some are far more confident in their ability than may be warranted (ouch, I know, I know).
But the truth is each of the people who are involved in WordPress development are people who identified what it what they loved and pursued that aspect of it.
So I may not necessarily be able to give you a 10 step program or a 21-day book on how you can get started in WordPress development, but I can tell you this:
- Spend time exploring WordPress. Everything it has to offer. Look at its features. Tweak every option. Explore the themes. Evaluate plugins.
- Note what piques your curiosity. What keeps you up at night? What makes you excited, and what makes you really want to learn how that particular feature works?
When you’re able to identify the things that appeal to you and the things that make you want to deeply dive into that area of WordPress, then you’re ready to start getting into WordPress development.
At this point, I’ve gotta ask:
- For those of you who are curious about WordPress development, how do you answer those above questions?
- And, if you’re experienced with WordPress and you’re reading this, how did you answer those questions and where did it lead you?
Perhaps I’ll share my own answers in a follow-up post.
Basically it varies for people I can only speak for myself. I researched tutorials related to a specific section of WordPress and spent enough time trying out until I get comfortable with that information. I started with developing theme from scratch to know how templates work and how to use template parts and after that I focused a particular feature for a while and then moved on to another feature, For example – Shortcode, widget, Customizer etc etc. Some topic would take a week others would take months depending upon my effort and difficulty level of that topics. That’s was my approach.
I’ve been thinking a lot about this since Wordcamp US. Where does one begin to learn about WordPress? Where did I begin? What was my path? I was in a Web Development program at Marlboro Grad School, VT, where I learned HTML, CSS and Joomla. I then started playing around with WordPress and created a blog. I made a website for a few small companies, working in trade initially. I would get overwhelmed with how many things I wanted to learn. I decided to focus on one framework and bought the developer pack at Studiopress. I then found a whole network of folks in groups and on Slack who help me along, give me confidence to solve problems and keep learning. But mainly it is what you talk about above, you find something that interests you, something that will keep you up into the wee hours researching and trying to puzzle out. I love the feeling of initially not knowing how to do a task, but having a vague sense that I might be able to make it work, and then figuring it out. Other “implementers” or developers know what I’m talking about…it’s such a good feeling, like solving a giant Sudoku puzzle where all the numbers slowly fall into place.
“I love the feeling of initially not knowing how to do a task, but having a vague sense that I might be able to make it work, and then figuring it out….it’s such a good feeling, like solving a giant Sudoku puzzle where all the numbers slowly fall into place.” -Yes. Well said.
For me I guess I am just scared or risks. I have been working at a wordpress sites support company and I have been busy supporting plugins interestingly enough, I have always wanted to come up with some plugin but always scared of taking the first step..
Many of us are no matter what field it is that we’re talking about. Sometimes it’s music or sports or programming or any number of things it could be.
I don’t know if this helps, but it’s totally normal to feel that way :).
Why, though? What have you got to lose? :)
At the very least, try building something for yourself and see how it goes then show it to a few friends and/or peers and see what they think of it.
It can always be something that starts small that you use to get better over time. Nothing has to be out in the open or in public until you’re ready for it to be.
I’m an implementer (7 on your recent quiz). I manage a couple of WordPress sites for a nonprofit and a small business. Any interest in development comes in two forms: curiosity about the process and not wanting to go to a developer every time I get stuck with an issue that’s that just out of reach of my skills. I want to be a very good implementer.
I’ve been daydreaming about taking courses in Javascript lately and improve my CSS. What you wrote Tom inspires me to dig deeper into WordPress as it is: build a theme, a plugin, etc. Thank you for this mid-course correction.
Please suggest concrete next steps. If I were to start building a theme what resources? What tools? Workflow?
Unfortunately, I can’t provide concrete next steps because it varies based on who you’re working for (or if you’re working alone), your level of experience with build tools, HTML, CSS, JavaScript, and so on.
I can, however, recommend that a fantastic place to start with theme development is the Underscores theme. If you study that particular codebase, you’ll get a sense for how a theme should be put together.
It’s also worth exploring the Codex for…
APIS…
The Customizer API
The Settings API
Theme Features and WordPress Features…
Hooks (Actions and Filters)
Internationalization
And then for more advanced things, reading about tools such as:
I know it sounds like a lot (and it is as its presented), but it takes time, practice, learning, experimentation, and so on in order to really nail down what it is that you want to do and the processes with which you want to work.
Perhaps in a future post, I’ll outline my current workflow.
Thank you Tom for this outline. It’s a good road map.
btw (and not to get you into providing more specifics – though those would be appreciated), I’m semi-retired. Website management is the semi part.
From my day jobs in non-profits over the years, I fell in love with bringing stagnant sites to life so they may be most useful to clients and staff.
Comfortable with: HTML, CSS
Not as comfortable: Javascript, Jquery & PHP/MySQL.
Not sure what you mean by build tools so other tools.
I’m okay with: XAMP.
Design tools such as Photoshop & Illustrator Dreamweaver, Brackets, Sublime text.
Version control in theory; played around with GIT & store some snippets on Gist.
Lived on Linux but it’s been a few years.
It is a challenge for me to stay focused on a streamlined set of tools.
http://www.linkedin.com/in/scottswebshop
For JavaScript, I’d recommend reading this post and this post.
jQuery can be picked up relatively easy by reading through the docs, and PHP and MySQL are more back-end languages that you may want to wait to turn to until you’ve gotten a solid grasp on the front-end.
Though I will say any of the Head First books on these languages will be a great place to start.
These are tools that help automate repetitive processes like compiling Sass files, linting and minifying and combining JavaScript files, and generally optimizing assets.
I wouldn’t worry about this too much until you’re much further into development.
Git is usually the de-facto place in open source, but if you plan to contribute to the WordPress plugin repository then you’ll need to be comfortable with Subversion.
There are some great clients available but they depend on which OS you use.
Re Subversion – Windows 7
Thanks for warning me of what for me now would be rabbit holes.
I started because of a need not filled by any other plugin. Actually, I paid two people and neither completed the plugin nor provided any code. It was wasted money that led me to ‘cowboy code’ until my mistakes started irritating me. Now I write out plans, keep track of bugs, pay particular attention to installation challenges, and even have a plan for future releases. But I still suck at revisions. It’s easier to copy a version, rename it, …
After two years, and tons of mistakes, learning debug and backtrace still get my skin crawling because of my lack of understanding. Using PHPStorm, Xdebug, and plenty of patience is the key to enjoying the thrill of getting something working.
For example, I finally learned to wrap var_export better to make the results clearer, however, there are many times a var_dump or var_export doesn’t show up and that confuses me. Lately, I’ve played with Kint but it’s simply a pretty var_dump, var_export.
Throughout the times I get stuck, I turn to videos and online searches. I’ve spent hours watching videos on PHP. I can’t find any good video tutorials on WordPress plugin development. My biggest challenge is the lack of “intermediate” videos. Most start out way too basic then skip into advanced.
And my biggest headache and angst is the lack of updated OOP WordPress tutorials. Sometimes I have no idea why an object is being instantiated, and singleton patters are only words to me.
Good resources for anyone wanting to dive in —
WordPress developer site
Redux Framework
WordPress Plugin Boilerplate
WordPress StackExchange (even though you must be careful on how things are written, show your attempts)
PHPStorm help
PHP manual
Lynda.com
Udemy
My next attempt is to rewrite the plugin using meta key/value pairs instead of making the mistake of adding fields to the _users and _usermeta tables. I’m also trying to figure out filters instead of replacing pluggable functions.
My Christmas wish … I wish there was a professional developer who I could pay to sit next to me and point out better ways to work :)
I am interested in WordPress plugin development.
Fantastic – don’t forget to sign up for the mailing list :).