Tom McFarlin has been maintaining an awesome WordPress Plugin Boilerplate for some time now. It’s a really good start for plugins that need a bit more structure to them and has things organized in a similar way to what we recommend in the book.

Tom just posted an update on the boilerplate on his blog and is asking for others to get involved.

To that end, we need help testing and reviewing the current version of the plugin. So if you’re a WordPress plugin developer who is familiar with the WordPress Coding Standards, the Documentation Standards, and who prefers an object-oriented approach to plugin development, then please check out the develop branch on GitHub.

Frontend frameworks are useful collections of code and assets that speed up and standardize the development of the frontend of your web apps. Two popular frontend frameworks are Bootstrap and Foundation. In the book, we offer an example of how you would include Boostrap into your WordPress theme.

Here is similar code to use Foundation in your theme. First, download the Foundation library from their website and place it into a /foundation/ folder in your theme. Then add the following code to the functions.php of your theme.

This will get the Foundation code and assets loaded into your theme. From here, you’ll have to follow their docs for how to actually start using their grid, CSS classes, and widgets in your theme.

I’m going to talking at the Philly Burbs Meetup tonight. If you are anywhere near Phoenixville, PA you should come. If you are anywhere near the Philly suburbs, you should join the burbs meetup group.

What am I going to be talking about? Building Web Apps with WordPress of course! I’m going to use this blog post to organize my notes.

Apps vs Websites

Websites with the following are more “appy”:

  1. Interactive elements.
  2. Tasks rather than content.
  3. Logins.
  4. Device capabilities.
  5. Offline use.
  6. Mashups.

Why use WordPress?

  1. You are already using WordPress.
  2. CMS
  3. User management.
  4. Plugins.
  5. Flexibility
  6. Security
  7. Cost

Using WordPress to Launch a “Lean” Business

The Lean Startup by Eric Ries summarized:

  1. Launch a minimal viable product (MVP) early.
  2. Experiment often.
  3. Iterate quickly.

With WordPress:

  1. One pager to announce product.
  2. Gather email addresses. (MVP)
  3. Add static pages.
  4. Add a blog.
  5. Add forums.
  6. Paid Memberships Pro to GET PAID.
  7. Build app into site, instant users.
  8. AppPresser for native mobile apps.

But but but… scaling

  • People talk about scaling too early.
  • Throwing money at hardware is okay.
  • Optimize your server.
  • Cache smartly.
  • Custom tables.
  • Bypass WordPress.

schoolpress_screenSee the site in action at

See the source code and docs on GitHub.

Some important notes.

  1. The site is in beta and will have issues. Point them out for me in the issue tracker in GitHub and help us work on them.
  2. Please only post true classes you intend to run at If you are just testing, use
  3. To deter spam, new classes won’t show up on the homepage or in the browse/search immediately. I have to enable this per class by hand. I may charge a small fee for open classes at some point in the future as well depending on what kind of spam bots we run into.

Going forward.

There are some obvious things that need to be completed (the code around submissions for assignments from the book for one), but remember that this isn’t an active project for me (yet anyway). It’s a demo we imagined up to showcase some of the ideas from the book. There is a lot going on and some really cool learning opportunities in the existing code and in the code that can be done going forward. I’m planning on blogging about the process on the site here.

The Building Web Apps with WordPress Class

The class I posted on the site is real. Sign up now. I may have to close signups at some point, but it is open for now and completely free. Starting in September, we’ll be tackling a couple chapters of BWAWWP each week, using the SchoolPress app as an example. Many readers of the book wish that BWAWWP was more of a step by step “how to build a WordPress app” book. We didn’t want to write the book that way, but I do believe that this class and some of the stuff that will come out of it will fill that need for people who are looking for that kind of experience.

Why did this take so long?

When we started writing the book, we thought up SchoolPress as an example app that we could use to help make the examples more concrete. We always intended on building the SchoolPress site, running it, and sharing the source code from it. As we got into the writing of the book we learned (1) that writing a book takes a lot of time and (2) an example from SchoolPress wasn’t always the best way to explain a concept. We ended up picking our examples based on what would help explain the topics we were writing about rather than having every example based on SchoolPress. And so we didn’t need a fully functional SchoolPress to finish writing the book, and we focused our time on the book itself.

We still had time to finish SchoolPress up before the books release, but didn’t hit that deadline obviously. Both Brian and I have small children, run startup companies, have many side projects, and generally are busier than we should be.

Excuses out of the way, I’m really sorry that we didn’t get SchoolPress launched earlier. I was honestly a little surprised in the interest in SchoolPress (how about the 450 page book?), but have come to respect why people want to and need to see that site to better appreciate the book.

Like any good project, SchoolPress was released behind schedule but still earlier than I am comfortable with. There is work to do to make it a good application and also general framework for building SchoolPress like sites. As I work through the project and share the challenges and interesting bits of development that come up, I’m sure I’ll have lots of great content to share here for people interested in building web apps with WordPress.


WC phillyWe’re not trying to play favorites over here at WebDevStudios, but we get really excited when WordCamp Philly comes around! This year WordCamp Philly is being held at The University of the Arts at the Gershman Hall June 7th and June 8th. Brad Williams and April Williams are helping organize this event for the 4th year in a row along with Reed Gustow, Doug Stewart and Liam Dempsey! Along with that, WDS is sponsoring WordCamp Philly this year.

Brad Williams will be a part of the WordPress for Big Media Organizations panel along with Paul Wright, Neil McGinness,  Adam Schweigert,  Brian James Kirk, and Davis Shaver. This panel is taking place on Saturday, June 7th at 2:45pm EST. A description of the panel –

How do media companies big and small make the most of WordPress? In this panel session, we’ll discuss the unique opportunities and challenges of using WordPress for media outlets, and also highlight some resources that could benefit your next media project.

You’ll also be able to catch Brian Messenlehner of WDS in the “Unconference room” talking about AppPresser and mobile applications. What is the “Unconference room”? It’s a room where you’ll have the chance to sign up with your name on a white board and talk about whatever you want to talk about.

Camden Segal of WDS is also going to be in attendance. You can find him wandering around to different presentations and picking the brains of his fellow WordPress designers.

You will be able to pick all these amazing brains at the WordCamp Philly After Party. This is being held at Buffalo Billiards from 7PM – 10PM on Saturday the 7th. WordCamps are a great way of networking and what better way to do that than over drinks and food?

Brad, April, Brian, and Camden are excited to get back in touch with those of you they have already met, but they are just as equally excited to meet new people that can inspire their drive for WordPress!


WDS hasn’t done a giveaway for a while now and we think it’s time to get one going. This time, we are giving away copies of Brian Messenlehner and Jason Coleman‘s recently published book — Building Web Apps with WordPress! If you’re unfamiliar with the book, here’s a quick overview:51gOTZ2xI0L

WordPress is much more than a blogging platform. As this practical guide clearly demonstrates, you can use WordPress to build web apps of any type—not mere content sites, but full-blown apps for specific tasks. If you have PHP experience with a smattering of HTML, CSS, and JavaScript, you’ll learn how to use WordPress plugins and themes to develop fast, scalable, and secure web apps, native mobile apps, web services, and even a network of multiple WordPress sites.

We are giving away 5 digital copies of the book, but we are also giving away 1 hard copy of the book that will be signed by Brian Messenlehner!

So, how do you win this giveaway?

In order to win one of these books, we are asking that you comment on this post with your idea of a web app powered by WordPress. Along with the idea of your app, we want to know what it would be used for and how it would benefit your WordPress site or someone else’s. It can be an idea of an app for yourself or an idea that will help the WordPress community as a whole.

How will we decide who wins?

After the deadline for the giveaway, the team as a whole will look over all of your impressive ideas. The most creative app idea will win the signed hard copy of the book. The remaining 5 digital copies will be given away to those who also have awesome ideas for a web app powered by WordPress.

Rules of the giveaway:

  • The giveaway starts today, May 21st at 12PM EST and ends Tuesday, May 27th at 1PM EST.
  • All entries must be in by 1PM EST on the 27th. Anything entered after that time will be appreciated, but will not be counted.
  • Employees of WDS and family members are welcome to participate in the giveaway but will not win a copy of the book.
  • You must comment on this post with your name, email address, and twitter handle.
  • We will announce the winner of the giveaway on Tuesday, May 27th at 4PM EST.

We look forward to seeing all of your amazing ideas for web apps powered by WordPress. Be sure to follow us on Twitter to keep updated with the giveaway and to find out the winners on the 27th!



marcusWebDevStudios is proud to announce the newest addition to our team, Marcus Battle! He has taken on the position of Back-End Developer.

Marcus loves WordPress. Having created his own content management systems and working with others, WordPress simply gets the job done better. He was introduced to WordPress in 2009 and kind of snubbed it as inferior to anything he could create. All it took to make him a believer was his inbox flooding with content management requests from his freelance work to realize that he needed some help. Ever since Marcus realized how much time he could save with upfront development and for clients, WordPress has been his tool of choice.

I am excited to work with WDS because of all of the great talents I get to learn from. I believe that you’re never done learning and even in my first few days, I can see that I’m “around” people who really know their stuff and are open to sharing information. Overall, I just believe that working at WDS is going to make me a better developer because of the people.

Outside of working for WDS he is a college student minister in Greensboro, NC where for the past 7 years; he’s helped hundreds of students prepare for their post-graduate careers and develop their faith.

In Marcus’ spare time, him and his wife are planning and preparing for their first child – “Baby Boy” Battle, so that’s already keeping them on their toes. (They’re not telling the name yet just in case they change their mind). You can follow Marcus on twitter to keep up on his baby news and other WordPress related awesomeness!

We are very excited to see what Marcus has to bring to WDS to make the company and the team better, as well as his personal growth. Welcome, Marcus!


Found Art is a series where we take real code from the wild (usually from open source projects) and use it to demonstrate different programming techniques in WordPress.

Chapter 10 of Building Web Apps with WordPress is all about the built in XMLRPC API for WordPress. We didn’t have time to get to it in the book, but WordPress makes it very easy to add your own methods to be called through the XMLRPC API.

A good example of this are the methods added by Paid Memberships Pro which allow API users to query for the membership level for a particular user and also to test if a user has access to a particular post. These calls have been used to develop single sign on solutions between a PMPro-powered WordPress site and other non-WordPress apps.

All of this code can be found in the /includes/xmlrpc.php file of the Paid Memberships Pro plugin. I’ve also broken out the code into sections so you can browse it here.

First, we add our methods to the WordPress XMLRPC API. Each method points to a callback function to handle it.

Then we write the callback function for the pmpro.getMembershipLevelForUser method call.

And finally, the callback function for the pmpro.hasMembershipAccess method call.

Notice that each callback function has a single parameter $args passed into it, which is an array of all of the arguments passed to the method via the XMLRPC call. The first two arguments will always be the username and password being used to access the API. The other parameters will come after. You should document and expect the arguments to be passed into the method in a certain order. In the pmpro.getMembershipLevelForUser method, the 3rd ($args[2]) parameter is the ID of the user to get a membership level for.

The actually callback function pmpro_xmlrpc_getMembershipLevelForUser() simply checks that the user calling is an admin or has the pmpro_xmlrpc capability and then passes the 3rd user_id parameter to the pmpro_getMembershipLevelForUser() function and returns the result, which is going to be serialized and delivered via the API. In this case, the pmpro_getMembershipLevelForUser() will return false for non-members and an object containing the membership level data for members.

With this API in place, you can make a call to the method using code like this in a WordPress app. If you place this code into a custom plugin or your theme’s functions.php file, it will load the XMLRPC class bundled with WordPress and make a call to a remote site where Paid Memberships Pro is activated and the PMPro methods are available. To test this out, make sure you update the remote url, username, password, and remote_user_id in the sample code and then navigate to “/?test=1” on the site you installed the code on. Notice that this is just a test. In the real world, this code would be part of a larger plugin or app and you would obviously do something with the level data returned instead of just halting output.

I hope this shows how easy it is to add your own API methods to WordPress. I know I was very surprised at how quickly I was able to add the method to Paid Memberships Pro when I finally got down to it.

If you want to see more examples like this, with great explanation of the inner workings of WordPress, be sure to pick up our book Building Web Apps with WordPress.

wcmia_2014_badge_speakingThis year is the WordCamp Miami 5th anniversary event! For need to know information, you can visit the WordCamp Miami Blog. You can also sign up for SMS alerts on schedule changes, after party details, and emergencies. This year Brian Messenlehner, Brad Williams, and Brian Richards of WDS will be attendance. All three of them will also be presenting on what they know best — WordPress!

Like last year, WordCamp Miami is going to be holding a BuddyCamp Miami on Friday, May 9th.  This is where you will be able to find Brian Messenlehner for the first time during this event. Brian is going to be speaking about Building Mobile Apps With BuddyPress. In this session, he will be discussing how BuddyPress might be used in building a mobile app. You can sit in on this session at 1:15 PM on Friday, May 9th. BuddyCamp Miami is being held at the Whitten Learning Center.

You can find Brian Richards on Saturday, May 10th at 11:15 AM in the developers track. I don’t hate you, I just hate your code is the topic of Brian’s presentation. In this session, you’ll learn why writing clean and simple code is so incredibly important and you’ll learn some tips and tricks to achieve this goal.

If you miss Brian Messenlehner‘s BuddyCamp presentation, you’ll have the opportunity to see him speak again. You can  find him in the developers track on Saturday, May 10th at 3:00 PM to talk to you about Building Web And Mobile Apps with WordPress. With this talk, he will be more focused on the use of WordPress.

And last but not least, you can also find Brad Williams on Saturday, May 10th at 4:30 PM in the Designer Track for WordPress Podcasting: The Panel. Here, Brad will be joined by fellow WordPress Podcast enthusiasts Dre Armeda, Suzette Franck, Matt Medeiros, Pippin Williamson, and Brad Touesnard.

A description of the panel:

This year we are proud to be hosting a unique and a WordCamp-first panel this year at WordCamp Miami on May 10th (Saturday). We will be hosting a “Podcasting And WordPress” panel, with some of the biggest and most popular WordPress podcasters all in one room. One *physical* room. They will be telling us how they do what they do, what mistakes they’ve learned, and how they run a successful podcast. Plus a special surprise which we won’t tell them about yet

Brian, Brad, and Brian are always excited to make new connections with fellow WordPress lovers. They also look forward to reconnecting with those they already know. You will have the opportunity to pick these master brains at the various events such as the networking party and the Ice Cream Social. If you see any of these guys hanging around, make sure you stop and say hey!