Kerry Skinner of KLS LifeChange Ministries came to me looking for a better way to run his online training. He had a set of six courses that he wanted to sell and had developed between ten and fifteen lessons for each course. A lesson consisted of a number of different questions, either multiple choice or free form text. What he needed built was a system that would allow him to integrate these lessons quickly and easily into his existing WordPress site and restrict access to them based on payment through an existing plugin he was using (WP eMember). That’s exactly what I delivered.
The courses and lessons system started with the design of a custom database schema to hold lesson questions, their possible choices (where applicable) and, eventually, user responses to the quizzes. From there, I built an interface that allowed Kerry to customize the questions in any lesson at any time, associate newly created lessons with any existing course and restricted access to lessons in a course based on the order in which they should be completed. There were other interesting things, such as allowing each lesson to be assigned a pass percentage (where some lessons were less or more restrictive then others) and ensuring that some courses only allowed the lessons associated to be taken once a day.
In addition to building the interface to allow Kerry to do all the data entry and modification he would need, I also created an import utility that took some Microsoft Excel files that Kerry had painstakingly created (containing all his lesson questions and possible choices) and inserted them in the correct format in the WordPress database. Finally, I supported the launch of the system by doing copious amounts of testing against the payment solution, the existing site structure and then providing after-launch support for a few unanticipated circumstances.
This was one of the most fun projects I worked on in 2011 and also one of the most challenging. The requirements were very custom, far beyond the standard WordPress plugin project, and the results were very, very exciting to see. Kerry was happy because he got exactly what he wanted and I was happy because I delivered something I knew was awesome and indicative of both my abilities and the extensibility of WordPress.