Becoming a WordPress Plugin Developer with Brian Hogg, Part 1

Sponsored by:

Brian Hogg is a Canadian, WordPress Plugin Developer, Educator, and more. He has a few great courses on how to create WordPress plugins and a very informative newsletter to go with them. In this 2 part episode, we discuss his plugins as well as general plugin development; this includes building tools, SVN, submitting to the WordPress repository, and more.

 Show Notes

Joe Casabona: This episode of How I Built It, is brought to you by two great sponsors. The first, is our season-long sponsor. Liquid Web has been best known as a managed hosting company with tons of options. It’s also designed a managed WordPress offering that is perfect for mission-critical sites. If you’re looking for improved performance, maximized uptimes, and incredible support, Liquid web is the partner you’ve been looking for. Every liquid web managed WordPress customer has ithemes synced integrated into their managed portal allowing them to update several sites with a single touch. Liquid web hosts all of my critical websites and I couldn’t be happier with them. If you Sign up today, using the discount code ‘howibuiltit33’, you get 33% off for the next six months. Visit buildpodcast.net/liquid to get started. That’s buildpodcast.net/liquid.

It’s also brought to you by Staging Pilot. Staging Pilot makes it easy and profitable to sell WordPress maintenance services. If WordPress maintenance isn’t your primary focus, it could be a real time sub. Maintaining a staging environment, updating and then deploying those updates, and diligently testing them is tedious work. With Staging Pilot, every part of the process is automated. Staging Pilot even automates the testing by doing visual comparisons of screenshots from your site before and after each update. it uses a bunch of fancy algorithms and AI to determine whether your site broke. If everything looks good, the updates are deployed to the live site. If something breaks, Staging Pilot holds the process and makes sure that nothing gets deployed. You get a chance to look at a simple before and after view so you could see what broke and then fix it before resuming automatic updates. Staging Pilot lets you build recurring revenue by offering maintenance plans without all the typical headaches.

And I met the guys from Staging Pilot at WordCamp DC and I’ve gotta say they have a really impressive product. I talked to Nathan of Staging Pilot later in the season so definitely keep an eye out for that. And if you want 20% off a lifetime purchase of Staging Pilot which if you’re a freelancer you should definitely want, then head over to buildpodcast.net/pilot. That’s 20% off your lifetime purchase at builtpodcast.net/pilot.

Hey, everybody. So this is another two part episode we’ve got for you this time with Brian Hogg. He’s going to be talking to us about a plugin that he built, as well as the general plugin development process. Brian is a fellow course developer like me. He’s got a lot of great courses out there and we talk pretty regularly about developing courses. But he’s also an expert WordPress plugin developer so you can learn a lot from him like I did in this two part episode. In the first part, much like Andy’s episode, we talk about his specific product. In the second half of the episode, we talk about general plugin development. So have a listen and I hope you enjoyed this episode as much as I did. And without further ado, on with the show.

Hey, everybody. Welcome to another episode of How I Built It, the podcast that asks “How did you build that?” Today, my guest is Brian Hogg. Brian, how are you?

Brian Hogg: I’m very well. How are you?

Joe Casabona: I’m fantastic. Thanks for being on the show. Brian and I are educators masterminds. Together we both developed online courses and while we’ll touch on that a little bit, we’re actually going to talk about one of your plugins, is that right?

Brian Hogg: Yes. I think so, Events Calendar Newsletter which was the first release plugin on my own and then the first one I made pro. So yeah.

Joe Casabona: Cool. very cool so let’s start there. Why don’t you tell the listeners who you are, and what you do, and how you came up with the idea for Events Calendar Pro?

Brian Hogg: Sure. So again, I’m Brian Hogg. So I’ve been custom developing stuff, I mean I learned C back when I was 12 and I’ve been developing various languages for many years and stumbled upon WordPress. God! probably quite a while ago now actually even after meeting Michael, Mike Little, I still didn’t, I’m talking, I don’t need WordPress. I just print my own stuff in a notepad with HTML files. It’s fine. But finally saw the light and now I’ve been on WordPress for quite awhile.

So for that, the Events Calendar Newsletter plugin, it actually came from a known inch. So I run a couple different events in Hamilton Ontario Canada and one of the, there’s like this community hub where someone started software Hamilton that promotes the events by email. So he would promote our events you know, for local freelancers and we were alternating between Wednesday and Saturday. So Saturday would be like 2:00 PM and Wednesday would be 6:00 PM. And in his emails a lot of times I notice you put like Wednesday 2:00 PM and like “Well, no people are at work, that’s not the right time. What’s going on? Are you doing this manually?” and I noticed the other WordPress site so I figured he had some automated way to do it. Just again doing it manually, I can’t figure out any way to pull all the details of the events that I need and stick him into mailchimp or I think you would choose Mailchimp at the time. So I’m like, “Oh maybe we can find a plugin for you”. I Searched around, but couldn’t find anything. So basically after one of the meetups, coder camp or something where a bunch of developers get together, we headed to the hedge to the pub, sat on this grimy chair, and kinda current belt it as the first version. I was specific to his calendar, which is the Event Calendar anymore, Ajax calendar and his software and creator’s way for him to pull out the details of the event in the format he wanted and never make a mistake on our events again. So turns out that spot that we actually created, it’s been kind of a Mecca for startups in Hamilton. It’s some people were on this other grimy couch chair where we’re all squished together, creating this app. I forget which app, while people drunkenly row throwing darts above their head which is like extreme programming to that’s…

Joe Casabona: Right. That’s like a sport.

Brian Hogg: It’s a sport that you might lose ash with…

Joe Casabona: Yeah, yeah. So that’s awesome. So you are actually the second guest this season to say that you built the first iteration of your plugin in a pub.

Brian Hogg: Nice.

Joe Casabona: Yeah. So that’s very cool to hear that for people who are looking for inspiration and maybe unique places, it sounds like a pub is the place to go.

Brian Hogg: Yes. there’s one beer like they have two beers everything goes.

Joe Casabona: Yeah, yeah. And you know, it’s I know a lot of college kids say that you know, the more I drink, the better programmer I am, right? But believe me that’s not the case. you think, you know…

Brian Hogg: You look the next day at your code and, or just the functionality and it’s like, wait this isn’t doing anything.

Joe Casabona: Yeah, what did I do here, yeah. So cool! Well that’s awesome. So you know in the same vein as a lot of people on this show you were scratching your own itch. Then you said that this was your first WordPress plugin that you kind of submitted to the repo, is that right?

Brian Hogg: No, so I did work for a startup and that’s how I first started getting into WordPress was taking a JML extension and converting into WordPress. And then I release that for them, maintain it and everything else is not on the repo anymore. But so this was the first kind of plugin that you know, I myself released and tried to get back and figured, you know. I did a little more, like I added support for one more calendar like a popular one, the Modern Tribe one before releasing it publicly just so you know, more people could use it. But, yeah.

Joe Casabona: Nice. Very nice. So you know you essentially initially did this for a friend. But as you grew it and decided to add like pro features, what kind of research did you do to figure out, you know, what’s the, what should I add, what should I make free, what did I have paid, things like that?

Brian Hogg: Yeah. So it kind of came both and it was just really by listening to users. So we were sitting there for about a year, kind of steadily growing and you know, it’s getting out this this huge plugin. But it’s, I was starting to get requests from people that I thought “Oh there” from you know XYZ, I’m pretty sure they might have some budget, you know, for features right? So I didn’t have the pro version at the time but I’m like, ‘You know what, okay, it is a start game to power worm like like should I keep adding as a pro or should I spin this off. Or sorry into free or should I spend this off and create a pro version. And luckily through another mastermind group and a couple of kind of guest adhoc mentors who’ve been doing it longer than I have, you know, I questioned whether adding this relatively small in terms of code is relatively big in terms of time savings and value for the people using it. I’m like, you know, “Should I make this?” You know, I could just pop it into free. Why not just pop in free. And they’re like “No dude” like it’ll totally be something they’ll save people out of time and that clearly they’re willing to pay for. So that you know that started now just by filtering by categories for events. So adding that as kind of a first pro feature and then again from there, just listening to customers ’cause I could totally guess all day.

And I have added features that I’m like, “You know, what? This is obvious that this should be in there even if no one ‘s asked for it yet.” But most of the time it’s just listening to users and they’ll have way better ideas if they had that than you do and chances are there you know, they’re the customers, right? So they’ll know better.

Joe Casabona: Absolutely. I’m like, you know, I find that with stuff I make people are using things in ways I didn’t even imagine. So just by listening to yourself you’re really limiting the capabilities as well

Brian Hogg: Exactly.

Joe Casabona: Very cool. So I had a fleeting thought now that I lossed and I’m really bummed about it. So I hope, “Oh no! this is perfect actually. It’s come back to me so I just, before this, I watched a video about the life of Pablo Picasso and his sketches and there is an anecdote in here, you said that you know small amount of code, Pablo Picasso is, this is more, that he somebody asked him for a sketch on the street, he sketched something really quick, gave it to them and he said this will be $30,000.

Brian Hogg: Well I heard it’s $5,000 that’s way more, I heard.

Joe Casabona: Oh! see, I heard $30,000 so let’s say $5,000…

Brian Hogg: Maybe in today’s money, right?

Joe Casabona: Yeah. yeah, right? The guy said, “$30,000? this took you five minutes” and he said, “No. It took me a lifetime”, right? which is great. I mean that’s what you get when you have an experienced programmer or a lawyer or anybody who applies their mind to something, right? You know, you sure you could go off and build your own website and it might take you 40 hours and it might take one of us 10 hours.

Brian Hogg: Or less, right?

Joe Casabona: Or less, yeah, right. You get all that 35 or so hours back. So…

Brian Hogg: Yeah. And you know, adding those feed lines the code says that filtered the category yeah. But someone to do that, we need to “a read my code”. We need to figure out where in that code to put that feature, would need to learn PHP, would need to learn, you know, like a bit of the WordPress circuit, right? Like there’s so much that they would actually need to know to be able to put that in and you’re basically saving that for them. So…

Joe Casabona: Yeah, absolutely. And I mean to your credit probably, you probably wrote the plugin and at least a halfway decent manner to make it easy for you to pop in such code. You know, it certainly is not all like spaghetti code because it would have taken you a lot longer. So…

Brian Hogg: Yeah. Well you can download the code off the WordPress repo and make that call for yourself. Just [crosstalk 12:01.4] the go to statements that’s all.

Joe Casabona: When I do the bumpers for this episode, I’m gonna have looked at it and I’ll comment later.

Brian Hogg: Yeah, exactly. So it turns out that Brian Hogg actually can’t code at all and you should just not listen to this at all

Joe Casabona: Everything is just a giant plain statement.

Brian Hogg: That is a big fear that a lot of people are getting started. I mean obviously you should know as much as you can and things like security as well. But I mean again especially when you’re looking to do a business and sell plugins, the quicker you can get it out there and actually get some validation, get some real people testing it the better. And you know, yeah, your code might not be perfect but when will it ever be perfect. And just getting that early feedback is way more important than sitting on for months if not years thinking that your code or whatever that no one is going to really look at is you know up to par whatever that part might be. So…

Joe Casabona: Yeah, absolutely. And to that point I mean the sooner you get it out there, you know, if you spend so much time making sure it’s perfect before you get it out and then like nobody wants it.

Brian Hogg: That’s a bummer.

Joe Casabona: Yes, Scott Bollinger gave that great piece of advice on the show in Season Two where he talks about like, “Hey, you know, focus on something and then get it out there”, you know, because if you spend a year of your life working on something and nobody wants that’s just like a year, more or less down the drain as far as the product goes let’s ignore the things that you’ve learned.

Brian Hogg: Yeah exactly. At least it’s a learning experience regardless. But yeah, I’m sure we could go on and on about people who said things for months and then only to find either you’ve maybe added too much stuff too, right? That’s the danger as well is that literally you could just have feature bloat and you just added all these things that you think need to be in there and then you just made it so confusing that nobody knows how to do even the basic stuff, right? So yeah, the easier to get it out there it almost saves you from yourself and adding all these things that you don’t need.

Joe Casabona: Yeah. And if you do build you know, some of those things that go beyond the minimum viable product, take them out. Then you have the, you know, then you have them ready to go, you know. I used to do that for freelance jobs. It would take me just like a little bit of time, a little bit of extra time, and I would leave it commented out. And then if they asked for it, I would uncomment it and….

Brian Hogg: Nice.

Joe Casabona: Yeah. I did this for you, like super fast, because like “Here you go. Congratulations!” You know, it’s…

Brian Hogg: That’s awesome.

Joe Casabona: Yeah. Because you know, writing code for yourself or for a client is a learning experience and it’s fun. But it’s also a business and you need to, you know, kind of find the right balance, right? And I think you think you talked a little bit about that in your course which we will touch on in a bit. But first we talked about, you know, doing things we both kind of mentioned the mastermind group right? So you mentioned that you’re in a couple, you also mentioned that you talk to your customers. What kind of advice do you glean from the groups that you’re in, and then from the customers? Do you have specific mastermind groups, for like, business advice or features or maybe something that could be your code, things like that?

Brian Hogg: Yeah. I mean they are very, you know, I literally just had a mastermind before this where they’re even talking about, you know, “Should we spin up another mastermind to talk about this specific thing?” And like, “Whoa! whoa!” How many million now? 1,2,3,4 so, No. You may need to be careful about, you know, getting too much advice and then having analysis paralysis and then never actually doing anything. But one is with a couple other people who again have been doing the plugin stuff longer than I have who can you give me feedback on either features, something you have adding or maybe the structure of the website and trying to optimize that for conversions or just yeah, whether they think “Oh this feature or pricing” I mean that’s a huge thing as well, right? Like I’ve had especially with the course and one mastermind, you know, I was thinking you pricing it a lot lower. and they’re just like “No. You’re saving people a ton of time” you know? So they’re giving that validation, that confidence to be like, “Yeah, you know what?” and then if you price it higher you can always have a discount. Whereas if you price it really low kind of, you can’t do any discounts because you’re already so low to begin with, right?

So they’re all pretty different like one is again that plugin, WordPress plugin specific mastermind. One is for other people doing kind of general SAAS products and info products and just online does when they were in which is, you know, specific for course creators. So they are all different people in each one. Oh and another one that’s again info products and people you know, the white guy who started it and it’s kind of heading it up product 3300. I mean he’s been doing this for a long time and has, you know, in cells nothing below you know, 200, 300 and it’s just great for both add spend, advice, and landing page advice and stuff like that. So everyone has different tips and just different perspectives. But again, you need to be careful not to get it. I do find it sometimes overwhelming there. Sometimes I just need to step back and go, you know, what they, there’s no way to know for sure you know what the right decision might be. So just make one and then learn from it. And then in one person’s right way, “might not work for your audience and your product”. So ultimately you just need to kind of make a decision and go with it, and not not freeze too much.

Joe Casabona: Yeah, absolutely. And you know, like you said, there’s a lot of value to getting other perspectives but it should be people that you trust, right? I’m not just going to join like a general mastermind group whereas people I don’t know because then it’s just people walking up to you being like you know what you should do. You know, I’m a huge Disney World, Waltney Disney fan and every time I go to Disney World I invariably overhear somebody say, “You know what they should do?” And then like just something that’s specific to them. I’m like, they guys, they have 77,000 employees at Disney World alone. They’ve been doing this for 40 years, I’m sure they probably thought of that. Whatever you just said, they thought of that.

Brian Hogg: Exactly, yeah. You know it’s just a very good advice. Yeah. I have, I did actually join one and then subsequently left. It was like a page Facebook group, but yeah it was just a, it was just a bunch of different people giving advice and then you look, and you’re like, “Oh” like they’re in sound like it’s a bad thing but like once a bookkeeper you know, once like an artist you know, one once like IT whatever, like completely different domains and they’re giving advice on stuff that they have 0 experience. And it’s fine to have like an opinion and give your thoughts and sometimes it can totally cut through, you know, your indecision or whatever. But yeah, I mean it oftentimes is coming at the left field and…

Joe Casabona: Yeah, yeah, absolutely. And that’s you know, and that’s not to poo poo people giving advice. That’s absolutely not the point of this. It’s the point is that there are people who give advice just to give advice, and then there are people who give you advice that should legitimately help you.

You know When I was in a business incubator right out of college, I still like, I wanted a business plan competition and we got office space and it was all very wonderful. And this is before I understood what the GPL was. So like our whole business model is flawed because our product is based on WordPress [inaudible 19:18.17]

Brian Hogg: Yes, yes, yes.

Joe Casabona: And we had just a parade of local business owners coming into our office saying “You know what you need to do?” like that and the subtext is, this worked for me therefore it will work for you. And you know I’ve said this on the previous show, one guy said “You know what, you gotta wear a suit to work every day”, “No. I don’t”. I like wearing suits. I think I look good in suits but I’m not gonna wear a suit to work every day. I’m wearing shorts. I’m not wearing shoes right now. I’m very comfortable and I do good work. So…

Brian Hogg: Exactly.

Joe Casabona: You know, that worked for you and that’s great, you have a successful business. But understand my problem and who I am before giving me just like general advice.

Brian Hogg: The best is almost all questions like people who have had the experience realized that maybe what had worked for me might not work for you and just says, “Oh, have you tried this?” and then they’ll give kind of feedback based on your answer like. “Oh yeah, I tried.” This is like “Oh, but did you really try that”, you know, or did you just think you tried it? Or you just discounted it because you didn’t? Or you know, “Okay, cool. Yeah, you have tried this.” Now maybe try this or something, right? Like the ones that speak less than you are usually the ones who are guiding you in the better direction which is kind of nice.

Joe Casabona: Yeah, absolutely. The people who have the most valuable things to say are the people who don’t speak a lot, which I talk a lot. So, you know, take that conclusion from there.

Awesome! So well we’ve talked at length about kind of the general idea and the general business stuff. But let’s get into the title question here, and so how did you build your plugin? And this could be the mechanics of it, the tools that you used, how you sell the add-ons? And maybe something that’s particularly interesting to me is you have the free version, then you have the add-ons. How do you go about verifying and validating the add-ons and then continue to charge for those add-ons?

Brian Hogg: Oh, so I don’t have add-ons for mine. But I do have to separate the free and pro version. So it didn’t start out as having like the add-on like having like free Event Calendar Newsletter but you had to have and then having the pro which was like an add-on to that, right? But ran into a whole slew and I’ve got an article up on brianhogg.com just kind of going into a little more specifics. But essentially it was getting people who are finding the plugin directly and we’re like, “Oh, I didn’t even know there was a free version. I could’ve just maybe used the free version. I didn’t do this pro.” like, “Oops!” because I wasn’t really mentioning it too much on the website, right? But plus also keeping it up to date which I notice with a lot of different plugins like Beaver Builders kind of iron this out and same with Modern Tribe. But basically you have to keep both in sync. And I found it a lot more useful to release just the pro version first, you know, maybe to like this is a pro specific feature. But maybe touching a bit of the free stuff, you know, I could just now release it to the pro. People without having to also update the free version at the exact same time.

So I’ve got a process which again I detail a little more. It’s a Grunt script, you know, that aligns basically including the free version inside the pro version in like a core folder. And then, you know, adding stuff on via hooks and filters and whatever else you need to do to add that additional functionality. So that’s how I’ve structured it’s worked really well to keep things, you know, basically together. There are two separate repose free intro pro but at least you’ve got kind of that sync between them and you’re free to release one or the other. And you know, users just have to install the one plugin so it’s kinda nice.

Joe Casabona: Yeah. Well that’s really cool. So you actually went the add-on route, noticed it didn’t work that well for you and then kind of re-architected. So we’re actually getting into one of the later questions which is what transformations hasn’t gone through since launch? Yeah. So that’s such really interesting. So you talked about your decision making process there and I will link the blog post in the show notes. But did that cause, so maybe what was the biggest headache that cost for you? Was it support, was it maintaining code base, like you mentioned or some combination of both?

Brian Hogg: Probably both. Yeah. So, yeah before I did it, I didn’t want to add to the support heading. So I made sure that the new pro version would detect that the free was there, you know, not load the included free version inside the pro. It would detect that the free was already activated and then just display a message on the event made it really easy where the admin would notice which would you just click on it and it’ll just automatically be activated. I suppose I could make it, you know, instantly deactivate. But yeah, I thought that was a good compromise to there.

Joe Casabona: Yeah. There’s the balance of doing too much for the user without informing the user, right? You want to let the user know you’re about to disable this plugin.

Brian Hogg: Exactly, right? And then that way they can be activated and then delete it afterwards because they’re gonna have to go in and hit delete anyway. So yep. So a lot of it was prompted by both support, you know, again having those people going, “Oh, I didn’t realize there was a free version.” Having that extra install step, that was really unnecessary. I mean why can’t I just include it into the pro and then having again that flexibility to be able to release a free version first. Or pro version first with that new feature whatever. I need to do and and have it not be so tight together especially with some of the wordpress.org stuff that’s been happening lately where, you know, you release a new version in your plugin and they can show that there’s an update but then not up to date right away. You know, it can sometimes take a few hours, four, you know one of the updates to show depending on your caching settings on your host. So it’s nice to have it just, you know, when there’s an update to that one plugin anyways. So you always have to have a few plugins that seem like something. Yeah, you’ve always gotta have some fail safe in there to not totally bomb the site if the one isn’t updated yet.

Joe Casabona: Yeah, absolutely. I mean that makes perfect sense. And the, you know, I wrote a podcast plugin that I use on How I Built It that relies on PowerPress. That’s what I use for the site ultimately building like a plugin podcast, plugin from scratch like that’s just a lot of work. And I was already on PowerPress, so…But like if I would’ve released it to the wild there is a fail safe to say like “Hey, this relies on PowerPress you should install PowerPress otherwise everything will be broken.

Brian Hogg: Which I did actually on another plugin. You know, I just totally assumed that whether plugin that’s called the Events Calendar shortcode plugin that they would have the Events Calendar and for a while on the new.org. And I think it still might be that sometimes when you search for things like Event Calendar, it comes up before the events counter in the results which is interesting. You know, I’m happy about that but really I think the Events Calendar should be first but it just makes more sense. But, yeah.

So then I actually got a review that prompted that and you should never trust because this has been happening for months and months. So yeah, you gotta kind of do these, kind of not make these assumptions because users often won’t tell you that they’ll just deactivate the plugin, go, and doesn’t work, whatever. But yeah, literally gotta review that it’s impossible that was the whole review. Impossible to use or something, and then you know, whatever. And I’m like, “Oh shoot! Yeah, you didn’t have the calendar installed. So now it has a message into text.” That instead of just not doing anything and not showing a message just says “Hey”. And then it actually clicks on it, shows the light box, you can very quickly install the events calendar any way you go. So, yeah.

Joe Casabona: All right. And that is a wrap for part one of my interview with Brian Hogg. Really great conversation. We get pretty developery.

In the next episode talking about build tools and releasing things to the plugin repository and things like that. So definitely tune in next week for that episode.

In the meantime, why don’t you head over to Apple podcasts and leave us a rating and review. I would really appreciate it to help people discover the show. And if you leave a nice review, I will read it on the air. If you leave a constructive review, that’s great too because I want to make the show better. Especially because we’re in our second year here. I’m experimenting a little bit more in future episodes. So I want to make sure that those things are what the listeners expect. And leaving a review on iTunes is certainly the best way to do that.

Thanks so much to our sponsors, Liquidweb and Staging Pilot. Definitely check those guys out.

And until next time, get out there and build something.

2 Comments

  1. Offering a Minimum Viable Product (MVP) is an excellent way to test your initial product offering when starting a new software business. The Lean Startup methodology (http://theleanstartup.com/principles) and building MVP plugin offerings have been an important first step for many WordPress plugin and theme authors. However, it seems at the same time; many great MVP products have been released for WordPress, only to be abandoned as the developers can no longer keep up with the rapid user growth, demand for support, and ongoing development required to make it a success. Unless you have the systems in place to facilitate growth, such as onboarding customers, offering top-notch support, and the ability to scale your software and support offerings, then you will have a hard time making a successful business around WordPress.

    1. Hi Seth!
      You’re right, you do need to plan for some time responding to support and the like, but it’s a nice opportunity to engage with users and come up with ideas for your plugin which you can implement when you have time. Consistently setting aside a couple hours a week can help push things forward, whether it be support, new features, or marketing (blog posts, youtube how-tos, etc).

      You can go a very long way without hiring so the need to rapidly scale (in order to pay for a bunch of employee salaries) isn’t there. If that’s you’re goal great, but I advocate this as a lifestyle business for 1-2 people full time or on the side for most.

Leave a Reply

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