Adventures in eLearning, Wordpress Edition

Once I had bpmnPRO, my new gamified eLearning app, done in Storyline, I figured integrating it with my Wordpress website would be easy, since Wordpress has a plugin for just about everything. But I had no idea what I was in for...

I knew I needed the following:

  • A way for users to try out bpmnPRO for free
  • A way to allow users to self-register for full access with a credit card
  • A way to secure it so that only registered users could access it
  • A discussion forum available to registered users
  • A way to track user completion progress and scores. To support bpmnPRO on iPad, that means the LMS function would have to support the Tin Can API.
  • Ideally, a leaderboard showing the top scores from all users
After searching the Storyline forums, I was led to Wordpress plugin called LearnDash, an LMS that supposedly supports Tin Can. But that was a false start. It does run in Wordpress and it is integrated with Paypal for self-registration, but the Tin Can support is just to launch the course. It has no way to get scores back via Tin Can, which I had assumed was the whole point of it. LearnDash doesn't actually support Tin Can directly. You need another plugin called GrassBlade for that, and a third one from Saltbox for the "Learning Record Store", the database of student achievement. The issue is that in the end, student records are not integrated with LearnDash. Administrators can only browse the LRS, essentially a log file listing every slide viewed by a student. Are you kidding me? Each of these plugins costs some money, not a lot but enough to be annoying, given the gulf between the brochureware and the reality.

In reality, LearnDash does not want to get quiz scores from Storyline. It wants to be the quizzing app itself. But since quizzing is the very heart and soul of Storyline, it is hard to understand why Learndash is featured on the Storyline site.

Next try was Scormcloud from Rustici Software. Unlike LearnDash, it hosts the eLearning app in the cloud. The Tin Can support is much better, and best of all it offers a Wordpress plugin. Scormcloud is fairly expensive, but you can use a free trial account to try it out. It did not begin well. I could not even upload my app without an error message. And when I contacted support, their answer (from the plugin developer) was a rude surprise: It's probably a conflict with another plugin, and since there are so many different plugins out there, we can't really support our own plugin. Here is the link to the source on github. Have a nice day.

I was on the free trial, so maybe I was naive to expect a more helpful answer, but if I were a paying customer - the starter package is close to $1000 per year - I would be pretty upset with that. In the end another Scormcloud support rep contacted me and helped work through that problem and others as well. At this point I would give Rustici high marks for tech support. But the plugin conflict issue was just a foreshadowing of misery to come.

With Scormcloud now accessible through my Wordpress site, the next step was securing a members' area of the site. Another plugin looked perfect: s2Member, which integrates Paypal with subscriptions to various levels of a Wordpress site. You can select which pages and posts are available in each level. Right now I just have level 0, free for any logged in user, and level 2 for bpmnPRO members. Plugins like s2Member are the reason people love Wordpress... and the reason why sometimes we damn it to hell. It's free, and it does a lot. Setting it up in both Wordpress and Paypal is fairly complicated but well documented. Once you've done the setup, you just select the details of the subscription - price, duration, and level - and the plugin generates a shortcode, which places an appropriately configured and encrypted Paypal button on the page. When the buyer clicks the button and pays on Paypal, s2Member grants the user access to the members' area.

For some reason, though, there was a lot of white space added above the button. Rummaging around on the s2Member forums, I found a workaround, a hack really, to fix it. Then a few days later the buttons disappeared entirely. This was also reported by several users on the forum. The reason given by s2Member is some conflict with the Wordpress theme or another plugin. I was using the theme recommended by s2Member, so I doubted that was it. I tried deactivating all the plugins, one by one, but that didn't fix either. One of the forum posts suggested wrapping the shortcode in [raw] tags (using another plugin). That got the button to display again, but the connection with Paypal didn't work. The error message referred to some illegal parameter values, which actually were fine in the button configuration. Finally I started looking at the html generated on the served up page and I could see the problem: something in Wordpress was converting a quotation mark to a curly quote, which in a service call is not the same thing at all. Wordpress's text editor has "filters" that tweak the formatting, and this was playing havoc somehow with the button code.

Now you might ask why I didn't submit a support ticket to s2Member. I started to do that, but you need to provide both your Wordpress admin login and server ftp credentials just to submit the ticket! Why not ask for my SSN and the PIN for my ATM card as well? To give them the benefit of the doubt, I guess they want to make sure you are dead serious before you waste their time with your stupid problems, and then give them the ability to see what's up for themselves. Maybe that would have worked, but the message is clear: don't bother them with Wordpress theme and plugin conflicts.

Finally I stumbled across yet another forum post from a user who suggested a plugin called TrueEdit to fix it. It disables some of the Wordpress filters. I was out of options, so I tried it and to my amazement it almost worked! I needed yet another plugin called Post Snippets to run the php code inside the unfiltered button code. Finally that did seem to work. The Paypal charge went through! But the link back to update the s2Member level failed. I was almost there, the last mile... but stuck at the last inch. For this last step, s2Member provides a diagnostic tool, and the issue turns out to be lack of a php-writable temporary file directory on my web server. All I had to do was contact my hosting provider. Errr, right. It's blocked by their "safe mode" PHP restriction designed to keep Wordpress sites from doing something terrible to their shared server. So I'm almost there, but I may have to find a new hosting provider to get there all the way.

And this perfectly summarizes the good and the bad side of Wordpress. It used to be a simple blogging platform. Now it's a general purpose website platform, configurable by non-programmers to do a zillion amazing things, leveraging a vast ecosystem of free shortcode-generating plugins. But these plugins can step on each other in unpredictable ways, and there is no incentive for the vendor of a free plugin to provide anything close to real tech support. And hosting providers who need to lock down certain parts of the web server or run PHP in "safe mode" may not be able to keep up with the expanding functionality.

Update: At the eleventh hour, my hosting provider came through. I actually had given up and was building a mirror site on another host, when they said they had given me a special php.ini without "safe mode"... and now s2Member actually works! bpmnPRO will be available for self-registration in the next day or two.