Black Friday & Cyber Monday sale, save 30%! Valid until November 30th at 11:59:59 PM (UTC - 6). Enter BFCM2015 at checkout or Click here to apply discount →

If you hadn’t guessed it already, I really, really love WordPress plugins. I love writing them, using them, reviewing them, and everything else involved with plugins. There is just something about them that really excites me; I always love writing new plugins. I’d like to explore a few of the reasons why I have so much passion for plugins.

The very first time I wrote a plugin, which was the first iteration of Font Uploader, I felt as though I was high on some really powerful drug. When I activated my first plugin and realized it worked, it was practically euphoria. I remember almost literally jumping out of my chair in excitement. It was amazing!

My development skills and understanding of how the plugin system works has grown tremendously since my first plugin, but I still get a deep sense of satisfaction every time I activate a new plugin, even the simple ones.

Over the last three years—the time frame that I’ve been building plugins—I’ve come to a realization: there is no limit to the kinds of plugins that can be built or the types of tasks you can achieve with plugins.

Some people will disagree with me, but in my mind there is a definite limit to the variations you can use to build themes. Every theme (or nearly) starts with the essentials:

  • blog page
  • archives
  • single post / page views
  • comments
  • menus
  • header
  • footer

The exact layout and appearance of these elements can change of course, but these elements will always be used in much the same way (with a few exceptions), which means that nearly every theme shares a large percentage of what makes it up with all other themes. This isn’t to say that the designs of the themes aren’t unique, but what the theme accomplishes in terms of functionality is not unique at all. Due to this, there is a defined limit to the different themes you can build, at least until you start repeating yourself.

Note: I’m purposely leaving app themes out of this discussion.

Plugins do not have this limitation, not even remotely. There is no limit whatsoever on the kinds of plugins that one can build (except for limits imposed by the WordPress platform). A plugin can do anything, anything at all.

I believe the fact that there are over 30,000 plugins in the repository is testament to this nature that plugins possess.

Why do I bring up this limitation of themes and this lack of limitation with plugins? It’s because of passion.

Creative people (and all others) get tired of repetition. If you are in the theme industry, I highly suspect that you have noticed a sense of repetition. It could be in your own work or in the work of your peers.

I see repetition in the plugin world every day: ever noticed how many social plugins there are?

Both industries have repetition, but it is much easier to avoid when writing plugins, simply because there isn’t an inherent limit on plugins.

Not only can plugins be built for just about every task under the sun, plugins can be written for other plugins that already do something. Today, for example, I wrote a plugin to extend the bbPress plugin. Plugins within plugins!

I’ve written a lot of plugins. Several of the plugins are very large and require nearly constant maintenance; when you (at least for me) work on the same plugin for a long time, you eventually get really tired of it, no matter how much you love the code or idea behind it.

By writing small one-off plugins every week or so, I keep myself from getting burned out by working on the same project for days, weeks, even years. I don’t quit the large plugins, I just take short breaks from them.

Jason Schuller put this really well in his recent article:

Maintain what you’ve created while it makes sense, but create things you are passionate about in order to grow and be happy.

Having an infinite number of possibilities for small one-off plugins makes me really, really happy. I was on the train to Chicago today (still am at the time of writing this), and I was able to whip up a quick add-on plugin for bbPress that lets users mark their replies as private so that only themselves and admins can see the reply content.

I love plugins because there are no restraints on what a plugin must do. A plugin could be 3 lines of code or 300,000 lines of code. The only requirement (and yes, I mean the only requirement) for a plugin is that it have the header comments that makes WordPress recognize it as a plugin.

After having written 100+ plugins, I still don’t feel as though I’m even close to running out of possible plugins to write. Even with 30,000+ free plugins available, there are always more options.

It’s awesome.

  1. Jerry

    Awesome post. Where did you learn your development skills? Any specific websites or tutorials?

    How often are you coding to strengthen your skills?

    • Pippin

      I taught myself mostly but learned by example many, many times. Follow other developers, look at their work, figure out how what they’ve done works, and spend as much time on it as possible :)

      I spend 5-6 hours per day in code.

    • Jerry

      Awesome, thanks for the response.

      Looks like you’ll have a new member tonight. I can’t wait to dive in to your tutorials.



    • Pippin

      Glad to have you!

    • jerry

      Is your member pricing per month?

  2. Maor Chasen

    A brilliant write up, Pippin! Cannot agree more!

  3. Bob Huber

    I have been wanting to learn about plugin development for some time. As a programmer and wordpress user, it seems like a no-brainer, but I’ve just never taken the time to learn the ropes. I think you have just convinced me to stop procrastinating and get in on the fun. Thank you for this post.

    • Pippin

      Great! Glad to help :)

  4. Shahzad Saeed

    100+ plugins! That’s really great.
    Best wishes!!

  5. Tom McFarlin

    I’m personally partial to plugins myself. My team at 8BIT and I used to maintain five themes and we sold off all but one – now, we focus exclusively on it and we’re not interested in doing anything more than that in the short term.

    It’s allowed to to narrowly focus our efforts on a single product. I’m not knocking theme shops, but that’s the route we’ve opted not to take, and we’ve still had success. We’ve partnered with Automattic and continue to sale Standard each month.

    Personally, I’m a fan of building plugins. I don’t have a single theme to my [individual] name, but I have a handful of plugins some of which I’ve even retired. In fact, a portion of the contracts that I accept are for building plugins rather than themes.

    All that to say that the theme market is lively and there are different ways to have success with it, but plugins are one of those things that the larger market are just beginning to understand and it’s pretty exciting.

    • Pippin

      You make a good point about focus. I’m discovering that after releasing a lot of plugins, with many of them being commercial, my focus has really spread out. That’s why I’m trying to narrow my focus back in by just working on Easy Digital Downloads (and small one-off plugins).

    • Tom McFarlin

      It’s tough, though, right?

      It’s a challenge because there are so many opportunities to create small one-offs or even slightly larger projects that solve a problem well (or better than a competitor is doing), but it comes at the cost of focus which, in turn, is a factor time and other work.

      I have to constantly remind myself to question the things I’m working on to make sure they’re contributing to the bottom line of some sort and that I’m not simply making something for the sake of making it.

      Not that there’s nothing wrong with that, but that’s a whole other conversation.

    • Pippin

      It really is tough.

      Determining whether to make something just to make it or to make it because it solves a problem (even a minor) one can be really hard. I mentioned in the post that I wrote a Private Replies plugin for bbPress while on the train yesterday. In one way I wrote it just to write it, but I also wrote it because I personally needed it on my support forums.

      FInding the balance is really important.

  6. corsonr

    I fully agree.

    Writing plugins, as you write, can be really excited. I’m always impressed when i see that i can add a functionality to WordPress.

    For example, one day, in my city, there was a fire in a house, in town. 4 people were dead, 3 children. As the children were in the same school my daughter goes, i wanted to “give a hand” to the mother stayed alone with her latest baby, because she had lost everything. This day i created a donation plugin to help raise money for her and created a small website.

    And this day i really realized how WordPress could be used in many different ways, sometimes just to make really simple things, and sometimes to make part of life.

    • Pippin

      That’s a great example (and horribly sad story) of small plugins can be created in a short period of time yet still help to fill a feature gap.

  7. Terry Sutton

    First, great post. I’d never really thought about the ‘infiniteness’ of plugins.
    Second, you’re really great at this. It’s really cool that you’re willing and able to share what you know
    Third, I, for one, would pay to have you go through a Plugins 101 course — similar to what Chris Coyier is up to over here:

    Keep up the fantastic work. It’s really helpful and useful.


    • Pippin

      Thanks for the kind words!

      I’ve done one series on your first plugin, but I would love to do another.

    • rhuber

      I agree with Terry Sutton. There are a lot of resources out there, but it all feels so fragmented when attempting to pull it all together. With your expertise, ability to teach, and tremendous enthusiasm for what you do… I would pay just about any premium for an in-depth class from you.

    • Pippin

      Great, I will try and put a course together :)

  8. Damian

    As always, great post Pippin. I’m glad I came here after seeing your tweet.
    Keep sharing your thoughts. :)


  9. Adrien


    My goodness!! You are VERY PASSIONATE about plugins…and that’s awesome! You have inspired me to take a deeper look into the world of plugins…i’ve been procrastinating because it seems very intimidating to say the least. But the best way to eat an elephant is “one bite at a time!”

    Thanks again…keep up the good work!


  10. AJ Clarke

    Next step…write a plugin that can write plugins 😉

  11. Adrien Nash


    How do you handle the updating of each plugin? Do you ever get tired of having to update the plugins after you sell them? How do you deal with that aspect? Is it a ‘Love Hate Relationship?’

    • Pippin

      I definitely get tired of plugins after they have been out for a while. Usually what happens is I stop updating the plugins with new features and just do security / bug fixes as they are needed.

    • JeffM

      What I’ve learned is that the trick to mitigate plugin update pain is to implement the extensible architecture of WordPress in your own plugin. Make your plugin pluggable.
      In short, use apply_filters() calls at key points in your plugin’s flow (you’ll know where they are). In your readme.txt file, properly document the hooks you expose.
      It’s not perfect, but it can buy you some serious time…

    • Pippin

      That is very, very true. By providing actions and filters, you make it much easier for other plugins / themes to modify the behavior. This is especially useful when there is a conflict.

  12. Dawson

    I’m using a couple of plugins you wrote and I totally like them. Thanks Pippin for contributing to the mighty WordPress community!

    • Pippin

      Glad to hear you’re happy with them :)

Your email address will not be published. Required fields are marked *

Error: Please enter a valid email address

Error: Invalid email

Error: Please enter your first name

Error: Please enter your last name

Error: Please enter a username

Error: Please enter a password

Error: Please confirm your password

Error: Password and password confirmation do not match