Having a domain of your own is a wonderful thing but like many things in life it comes with responsibilities. Self-hosted WordPress blogs are a regular focus of spammers and brute force attacks and more than likely your webhost already has measures in place to prevent the bots getting in. There are proactive measures you can also take to protect your domain and a host of plugins and tutorials to help with this.

To add to the collection I want to share with you my experiences of setting up and using CloudFlare. CloudFlare creates an extra layer between your website and the world allowing them to block threats as well as host and optimise your content. At an entry-level you can also use CloudFlare for free, which I've been doing for the last couple of months.

httpsRecently CloudFlare announced they were Introducing Universal SSL for all users for free. SSL/TLS are encryption protocols used to secure Internet communication. Hopefully you are familiar to looking for the https:// and not just http:// when you are doing your online banking or online shopping, the ‘s’ indicating the information you see and enter is secure, encrypted, preventing eavesdropping or tampering of the data. But why would I want to use a similar level of security for my blog as for banking? CloudFlare make a great case for this in their post:

Having cutting-edge encryption may not seem important to a small blog, but it is critical to advancing the encrypted-by-default future of the Internet. Every byte, however seemingly mundane, that flows encrypted across the Internet makes it more difficult for those who wish to intercept, throttle, or censor the web. In other words, ensuring your personal blog is available over HTTPS makes it more likely that a human rights organization or social media service or independent journalist will be accessible around the world.

[Another consideration is Google announced it would use https as a rank factor in it’s search results]

So how do you go about moving your blog to https? Well first, if not already, you need to sign up and setup CloudFlare. There are two routes to do this provided by CloudFlare. Unfortunately my host, Reclaim Hosting, isn’t yet so I had to go through changing nameserver settings (CloudFlare have additional tips on using their service with WordPress). When CloudFlare is set up, to switch enable SSL you need to go into the CloudFlare Settings > Setting overview where you see the SSL configuration:

SSL settings

CloudFlare SSL OptionsCloudFlare actually have a couple of options: Off, Flexible SSL, Full SSL, and Full SSL (Strict). Flexible is by far the easiest to set up and for most people the best place to start. There is a lot more detail about the difference between these in this CloudFlare post. In this they say:

Flexible SSL encrypts all data between your site’s visitors and CloudFlare using TLS configured with best practices such as forward secrecy and more. This is where most threats to web traffic happen: in your coffee shop, by your ISP, and others in the local network.

With this enabled and directing traffic through CloudFlare you can start using https on your blog. There are a couple of things to bear in mind as well as things you have to do. To use https effectively you need to tell your blog this is what you want to use.  There are plugins like WordPress HTTPS (SSL) that can help with some of this but I decided to do it the manual way.

Dashboard and site over SSL

Initially when I tried switching to SSL I ended in an endless redirection loop. Fortunately I came across this post on how to  Setup SSL on WordPress Behind Cloudflare Reverse Proxy. This is backed up by the WordPress documentation on Administration Over SSL and you might want to start with using the first 3 lines of code in your wp-config.php file to test that SSL is working:

define('FORCE_SSL_ADMIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')

When switching to SSL you may find parts of you posts don’t load. Some of this is down to how your theme has been written and for good themes it shouldn't be a problem. The next problem might be missing videos or images in posts. Basically modern browsers don’t like mixing http with https content. So if you use iframes as a way to embed content like YouTube videos and they are loaded over http nothing will appear. Google updated the embed snippet for YouTube videos from <iframe src=http://www.youtube… > to <iframe src=//www.youtube… > which defaults to serving the content using the same method as the main page. You can run MySQL commands to update these or it might be better to use one of the WordPress SSL rewrite plugins.

Forcing to SSL

So far we've enabled the option for your blog to be browsed over SSL including internal navigation links, but some one still might initially land on an http address. CloudFlare mention Page Rules in their admin interface for forcing to SSL but that setting appears to have disappeared. CloudFlare also mention a way that Apache hosted blogs can use the .htaccess file to redirect a user on to SSL:

 RewriteCond %{HTTP:CF-Visitor} !'"scheme":"http"'
 RewriteRule ^(.*)$ https://www.domain.com/$1 [L]

If like me you still use FeedBurner (I know) for your RSS feed you should also bear in mind that you need to keep your feeds alive for Feedburner (avoiding 400 error) – basically Feedburner doesn’t like to be given feeds over SSL. So my snippet for .htaccess becomes:

# HTTPS redirect
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteCond %{HTTP:CF-Visitor} !'"scheme":"http"'
RewriteRule ^(.*)$ https://yoursite.com/$1 [L]

Remember if you are forcing to SSL that any tools/apps you use connected to your blog like Live Writer might need updating .. as I discovered

Letting Google know you've moved

The last thing I did was let Google Search know my blog was now over SSL. You may have plugins that handle your sitemap and updates to search engines. For me I did this using Google guide on Move a Site with Url changes.


So a bit of work to get myself on SSL and save a couple of bucks on a SSL certificate. The good news is this sort of thing is hopefully going to get easier and more widespread

We recently moved the ALT Online Newsletter, which is a self-hosted WordPress site, to https/SSL. We did this before Google announced it would use https as a rank factor in it’s search results so hopefully it will also have a positive boost to our traffic. To do this we opened the WordPress dashboard and switched the WordPress and site URLs to https: 

address and site url

This setting handles the urls generated by WordPress for menus and post links but doesn’t effect hardcoded links in posts or inbound links. To handle these we added a couple of lines to our .htaccess file:

# HTTPS redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

This detects any urls with http and redirects to the https equivalent. All seemed to be fine until Matt Lingard noticed that our Feedburner RSS feed wasn’t distributing posts anymore. The issue … Feedburner can’t handle feeds served from https generating a ‘Received HTTP error code 400 while fetching source feed’:

Received HTTP error code 400 while fetching source feed.

The solution is to detect FeedBurner and not give it https like so:

# HTTPS redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

All straight forward enough but there is one last kicker. Feedburner caches your feed so when you go to Feedburner and Edit Feed Details and click ‘Save Feed Details’ it may still show as a 400 error. You can either wait for the cached version to clear to see if your changes have worked (or as I did spend an hour trying to work out why it wasn’t fixed) or trick Feedburner to ignore it’s cached version with some trash at the end of your url as a querystring e.g. http://newsletter.alt.ac.uk/feed/?source=feedburner


Update 18/06/2014: The Open Badges Issuer Add-on is now also available in the WordPress Plugin Directory. Get the Open Badges Issuer Add-on

OpenBadges_Insignia_WeIssue_BannerALT’s Open Course in Technology Enhanced Learning (ocTEL) is entering it’s final week. ocTEL has been and continues to be an excellent opportunity to explore ways in which we support ALT’s community of members. Last year the work we did in setting up a blog and community aggregations site directly feeding into the development of the ALT conference platform. This year one of the areas we were keen to explore was the digital badging of community contributions. The use of community badging is well-founded and predates the web itself. This area has however gained extra interest by educators in part due to Mozilla Open Badges. Mozilla Open Badges specify a framework for the description and award of badges using a common specification. The main benefit or this approach is interoperability. Recipients of Open Badges can collect badges in one place, manage them into collection and control how they are shared across sites, social networks and personal portfolios. One such place is in a Mozilla Backpack.

In the case of ocTEL the creation and award of digital badges, particularly within a community context, has been made very easy thanks to the BadgeOS™ plugin for WordPress. BadgeOS has a number of methods which trigger the awarding or badges including reviewed submissions as well as the completion of a defined set of steps.

One issue for us has been that to issue Open Badges with BadgeOS requires integration with the badge awarding and display site Credly. Sites like Credly are very useful parts of the badge ecosystem but the feeling we had was that if we were going to issue Open Badges we would take on the commitment of hosting the badge data ourselves rather than relying on a 3rd party. BadgeOS, regardless of whether you turn on Credly integration, still provides an excellent framework for creating and awarding digital badges. Even better is BadgeOS is open source and is actively encouraging developers to extend and enhance the plugins core functionality. If you look at the BadgeOS Developer Resources there is a number of ways this can be achieved.

With this in mind, with the support of ALT, I has decided to make my own contribution to BadgeOS  with the development of the Open Badges Issuer Add-on. This add-on achieves two things:

  • Badges designed and awarded using BadgeOS are now exposed as Open Badges compliant Assertion - Assertions are the DNA of Open Badges. They are data files which describe the badge and identify who it has been awarded to. Behind the scene the add-on is using the BadgeOS created data turning it into the required object recognised as an Open Badge. Critically this data existing in the host site. For example, one of my ocTEL badges exists here and is shown below in a formatted view.

Open Badges Assertion

  • The creation of an interface for the user to add badges awarded using BadgeOS to the Mozilla Backpack - this is technically made a lot easier as the add-on uses the existing Issuer API which provides most of the code to get the job done.

The rollout of this plugin in ocTEL is complete as detailed in ‘ocTEL digital badges are now Open Badges: How to add them to your Mozilla Backpack’. I’ve also submitted the plugin as a recognised BadgeOS add-on. The add-on will also shortly be appearing in the official WordPress Plugin Directory. Hopefully this add-on will make it easier for others to issue Open Badges through their WordPress powered site.

Like all projects this development greatly benefits for your feedback, which may include coding suggestions or improved functionality, so we appreciate your feedback.

Download the Open Badges Issuer Add-on for BadgeOS


This is a repost of Building an evidence hub plugin for WordPress which first appeared on the OER Research Hub blog on 4th October 2013

I was recently contracted by the Open University to experiment with a solution to record and display evidence for the  research hypotheses. Speaking to the project team a number of options were discussed from simple spreadsheet based approaches to re-purposing software versioning systems like Github.  In the end it was decided to develop a WordPress plugin. There were a couple of reasons for going down this route:

  1. WordPress is a one of the most popular open source platforms with a well documented codex and active developer community
  2. It's existing plugin and theme architecture make it easy to customise
  3. There are already over 27,000 open source plugins in the official plugin repository allowing easy feature extension

As part of the conversations with the team and having reviewed existing documentation the following relationship diagram was used to identify the structure and nature of the data that needed to be stored:

relationship diagram  

Having established this a the wireframe (shown below) was created to illustrate how data could be entered building upon the existing WordPress Custom Post Types:

evidence wireframe

Fortunately rather than creating the custom post type templates from scratch Francis Yaconiello’s has published a plugin template to do this. For this project we need three custom post types to enter data for hypothesis, evidence and location mapping to the relationship diagram shown above. To avoid duplication these templates use additional templating to make it easier to add custom fields. The result is shown below with the current ‘Add New Evidence’ screen.

New Evidence Screen

Location, location, location

location-lookupOne particular challenge was to find an easy way for users to attach location data to evidence. Rather than getting users to select a location name from a long list a simple location lookup which queried the existing location custom post types. This component uses, in part, the Pronamic Google Maps plugin which is included in this plugin as a software library. This route has been chosen to remove the dependency on other plugins being installed on the site which could be an issue for multisite deployment. The downside is that this component has become orphaned from the Pronamic  updates. This comes with an increased risk given the dependency on the Google Maps API. The mitigating factor is the Pronamic’s plugin stores the geodata in a way that it can be used by other plugins and mapping services.

Another reason for choosing to ‘bake in’ the Pronamic’s plugin is that with a line of code we can include geo options within the location custom post type. This option includes the geo-encoding and reverse geo-encoding of addresses making data entry easier.

geo-encoding and reverse geo-encoding

To save staff time in having to create new locations for evidence data has been imported from the evidence hub for open education using the WP Ultimate CSV Importer Plugin.


With some infrastructure in place for recording data the next challenge is to present this in a useful way. The current tack I’m going to take is expose the data as JSON (there’s a plugin for that) and try out some d3js examples, like a Reingold–Tilford Tree (H/T Tony Hirst @psychemedia)

The code for this project is available on Github


WordPress is a free and open source blogging tool and a content-management system (CMS) based on PHP and MySQL, which runs on a web hosting service. Features include a plug-in architecture and a template system. WordPress is used by more than 18.9% of the top 10 million websites as of August 2013. WordPress is the most popular blogging system in use on the Web, at more than 60 million websites [Source: Wikipedia]

WordPress is becoming much more than a blogging and content management platform. A combination of its very strong developer community, excellent documentation and solid core means it is increasingly being used as the framework for some very interesting projects. Within the education sector not only is it an excellent blogging platform but the ability to rapidly develop and evolve solutions is very powerful. As far back as 2006 I marvelled at the work Dumfries and Galloway College did turning WordPress into a campus e-Portfolio system.  One of my own interests is how WordPress can be used for an open course platform (MOOC, if you prefer). The advantage in both of these examples is that you are not restricted by the VLE in both functionality and availability (depending on your license agreement institutions may be restricted to registered students).

One concern I’ve had is how do you scale the use of WordPress within an institutional context? How do you go from offering one course to multiple courses? This challenge isn’t specific to just my scenario but applicable more widely. How do you go from supporting one WordPress blog to multiple blogs?

Fortunately this is something University of Lincoln have been doing for a couple of years and Joss Winn, who has led this development, kindly took some timeout to explain how they’ve gone about host over 1,800 WordPress sites (and counting). Below is the audio from our conversation embedded in a YouTube clip (mainly to add machine captions to help you with navigation – to use this visit the video and click on the transcript button image ) followed by my written up notes:

Institutional installations of WordPress - The University of Lincoln story




Joss started in 2008 with a web server to experiment with various web applications. As part of this he installed, what was then, WordPress Multi User*. Joss and his team slowly grew usage with informal awareness raising before submitting a proposal for a dedicated server and web address (http://blogs.lincoln.ac.uk/) for a WordPress Multiuser Site. Since then the offer has become more formalised with the option for all staff and students to create their own WordPress powered site. Staff and students are encouraged to help themselves but technical and pedagogic support is available from the  Centre for Educational Research & Development, where the project is based, or through regular workshops.

*Multi User was a fork of the WordPress code that allowed multiple concurrent sites from the same installation. Since WordPress version 3.0 this has been added to the core code. The trend appears to be towards calling this mode Multisite.

From early on Joss and his team were keen to experiment with the social networking plugin BuddyPress. This feature isn’t overly used by staff and students but one of the primary advantages of using it is it allows activity from across created sites to be displayed on the main landing page.

Joss highlighted one of the big advantages of their configuration is that it is one of the few University systems where users can invite others (including external institutions, consultants, members of the public) to join and collaborate on sites. With this the owner can also assign them the level of permissions they want for their site from subscriber to administrator.


blogs.lincoln.ac.uk sits on a dedicated Red Hat server with 8Gb RAM (Joss mentioned that if you are starting out you’ll get away with 4Gb). The database (MySQL) is now hosted on a separate cluster, but initially it was on the same one. All 1,800 WordPress sites run off the same WordPress install making it easy for them to update the core software and plugins (Joss also noted that they have never had a problem with automatic upgrades).

Within a Multisite configuration the default is that all the sub-sites include the same plugins and themes. To allow more control over this Lincoln use the Multisite Plugin Manager to control which plugins are available on different sites. Initially Joss and his team freely added plugins on request and prior to this summer there were a selection of over 70 approved plugins. Recently a usage audit (there’s a plugin for that) pruned this down to 7 for all new sites phasing out the other plugins used in existing sites over time.


The current list of plugins to new sites is:

* Joss is reviewing both of these as functionality now exists in Jetpack

Whilst there is a limited selection staff can still make requests for additional plugins which are activated on a per site basis using the Multisite Plugin Manager. The usual caveat is that the plugin must be in the wordpress.org plugin directory although premium plugins bought by individuals are occasionally used.

Additional plugins/themes used for the administration of Multisites include (there are 35 they use in total):

  • Multisite Plugin Manager – allows administration of the plugins installed by default and on a per site basis
  • WPMU LDAP Authentication - enables Lincoln staff and students to login with University credentials and if required create new sites
  • Akismet – used to prevent spam comments ($550/year)
  • Multisite Analytics -  site wide Google Analytics tracking (individual sites can also additionally specify their own tracking code)
  • Domain Mapping – allows individual sites the ability to specify a different domain name
  • More Privacy Options – adds three extra site defined visibility options: network users only, blog members only and admins only
  • BuddyPress – primarily used to bring together activity from across the platform
  • Farms 133 theme pack – curated set of themes from WPMU Dev (WPMU Dev has an annual member subscription of $588/year. This gives you access to a collection of premium themes/plugins as well as support)
Spam and ‘brute force’ attacks

Lincoln use the Akismet service (run by Automatic who also develop/own WordPress.com) to prevent spam comments. Joss explained previously they had used the free personal plan which permits non-commercial sites and blogs. There has been a bit of a grey area around this given the commercial nature of some University activity and they now subscribe to the Enterprise package which costs $550 a year.

Recently WordPress has become the target of brute force attacks. These hammer servers with multiple username and password combinations to gain access to sites. One reason for WordPress becoming the focus of these attacks is the relative ease in which they can be discovered (just search for ‘Powered by WordPress’). Apart from the potential security risk these attacks can act like denial of service and bring the server down. Lincoln hadn’t experienced any issues with these types of attacks.

WordPress provide guidance on hardening against brute force attacks. If Lincoln were to experience any problems because of the Multisite configuration it would be easy to apply these solutions


Initially Joss was using the Super Cache plugin but has recently switched to Alternative PHP Cache and MySQL caching. As this caused conflicts with Super Cache the plugin was removed.

Community guideline and acceptable use

Joss has experienced very little abuse on blogs.lincoln.ac.uk and from early on developed Community Guidelines. The University’s general IT usage guidelines are also highlighted to users


Apart from the staff (Joss has handled most of the Lincoln project plus doing other things) and server the other oncosts are $550/year for Akismet spam protection and $588/year for membership to wpmudev.org which specialises in multisite plugins and support (these costs work out as 60¢ a site per year)

Alternatives – Managed Hosting

When I asked Joss about Managed Hosting (Edublogs, WPEngine et al.) his main concern was not being able to run the LDAP authentication as a local application. He would also want to make sure he had the same level of control over things like plugin selection and deployment. For example Edublogs appears to have fixed list of plugins while services like WPEngine give you control over this.


So hosting your own multisite installation of WordPress is relatively possible even on a small budget. Given the flexibility of the platform there are opportunities to use it in other ways including establishing your own ‘cMOOC as a service’ empire. There is a growing list of institutions going down the WordPress Multisite route by either hosting internally or committing to a managed hosting solution. One of the big advantages of using WordPress for this, which we didn’t mention when I chatted with Joss, is that with the existing export tools it’s easy to export your site from the network onto wordpress.com or another WP host.

It would be interesting to hear your WordPress Multisite experiences. If you’ve used it does managed hosting work for you or has it thrown up problems? What is your institutional provision for WordPress training and support? As a multisite user are you experiencing problems with IT services imposing artificial barriers? Or more simply what current multisite plugin list?

Finally a big thank you for Joss taking time out to speak to me!

1 Comment

I'm not entirely sure what this post is. I started writing it on the train down to altc2013 and think it lost its focus between York and Sheffield. Essentially I wanted to write this to highlight some of the benefits of using BuddyPress as a way to capture user activity streams but at the same time some of the challenges of achieving an integrated experience using WordPress … I'll let you decide it's value and please feel free to comment (the ‘dirty code’ post will be a lot better).

For the last couple of week I’ve been working on the altc2013 conference platform. In previous years the Association for Learning Technology (ALT) had used CrowdVine to create a conference environment which allowed delegates to connect and communicate. This worked well but had a number of data bottlenecks making administration difficult. This combined with the knowledge that ALT members already have very rich networks on other sites including their own blogs and social network sites like Twitter, it was decided to opted some of the connectivist principals used in the ocTEL. The result, hopefully, is a site that replicates the CrowdVine experience with  several additional key features. These include:

In this post I’ll outline the general recipe used in the altc2013 platform, how interoperability was achieved between some existing WordPress plugins (saving the code heavy post for a latter date).

Core plugins

Starting with a self-hosted version of the blogging platform WordPress four key plugins are the basis of the site:

  • Conferencer – used to manage programme and session information
  • BuddyPress – social networking platform
  • FeedWordPress – used to pull delegate activity from 3rd party blogs and sites
  • MailPress – for daily newsletter distribution and management

The common issue when you stray away from WordPress as a blog to WordPress as a ___ is maintaining interoperability between plugins. For example Conferencer was never designed to work with BuddyPress so interfacing these plugins is required on several levels. To illustrate this below is a general interface diagram for the altc2013 platform followed by more detail about each of the main challenges that had to be overcome:

altc2013 platform integrations

Conferencer –> BuddyPress

In Conferencer the custom post type ‘session’ is used to enter and display session information. This post type  is associated with further custom post types for rooms, timeslots, speakers, tracks and sponsors. BuddyPress on the other hand doesn’t use custom post types or taxonomies, instead extending the WordPress core functionality with it’s own custom APIs, functions and features. Out of the box BuddyPress uses Groups as a way for members to cluster and collaborate. Integration between BuddyPress and Conferencer is primarily achieved by renaming Groups to Sessions (a cheap trick but it works). Doing this means when a user tries to view a Conferencer session which automatically uses a /sessions/ in the url, they are redirected to the BuddyPress group. This is achieved by creating a new page with the slug ‘sessions’ and then using this with the BuddyPress Group component (essentially duplicating the same url endpoint but relying on BuddyPress to steal priority over how the page is displayed).

WordPress Add New Page

BuddyPress settings page

At this point all we have done is trick WordPress into displaying a BuddyPress Group page. Additional code is required to hook into Conferencer session creation to generate a group in BuddyPress and create a relationship between the custom post type and group (included in the Github code shared at the end of the post). Another aspect of the integration is the Conferencer generated programme view. This includes a ‘Follow Session’, renamed from ‘Join Group’. This is done by reusing some of the existing BuddyPress functions to render a group button within the Conferencer programme.

BuddyPress <–> FeedWordPress

The FeedWordPress plugin allows the automatic collection of posts made on 3rd party sites using RSS. FeedWordPress ingeniously uses the existing WordPress Links table to maintain a list of sites it collects data from. Meanwhile within BuudyPress members can edit their own profile using defined fields. In altc2013 we use this functionality to allow delegates to register their own blogs. An interface with FeedWordPress is achieved by associating a blog feed address with the WP Links table. The added benefit of allowing users to add their own blog feeds is that we can make an association between blog feed and author. This means when a post is collected by FeedWordPress it is associated with the delegate and consequently BuddyPress associates this with an activity stream entry. 

Example activity stream entry

Reader <–> BuddyPress

The Reader isn’t a plugin in it’s own right (but I should make it), instead it’s a theme customisation I originally developed for ocTEL. All the reader does is render data collected by FeedWordPress which are in turn are just categorised blog posts. The Reader integrates with BuddyPress by using it’s native activity favouriting and by using an addition BuddyPress compatible plugin (BP Likes) also displays and records ‘likes’. This is achieved is a similar way to adding ‘Follow Session’ buttons of the Conferencer generated programme.

Reader - Favourite/LikeFavourite in Activity Stream

BuddyPress <–> MailPress

MailPress is a plugin which manages the distribution of a daily newsletter of latest conference activity. The two interfaces with this and BuddyPress is the addition of link within the members notification settings to control their newsletter subscription. Given the way BuddyPress uses WordPress functionality to add additional information to various interfaces this was achieved by matching the WordPress/BuddyPress user id with a table of users maintained by MailPress. The second layer of integration was to include highlights of the BuddyPress activity stream in each newsletter. This was achieved by using existing BuddyPress functionality to render and display a custom activity summary (as used also on the homepage of the conference site.


Hopefully this post has given you some insight into what was required to create the altc2013 conference platform. Using existing open source plugins, we’ve interfaced them to create new functionality. Whilst the effectiveness of the new altc2013 conference platform is still to be evaluated we now have a basic platform to agilely respond to the needs of delegates.

A reminder that the code we’ve developed is on Github so feel free to peruse over and take in your own direction and comment on, if your an altc2013 platform user the feedback button is the best way to suggest improvements or highlight bugs, and if you are generally interested in this area the comments on this post are open

1 Comment

You may have seen from my colleagues Lorna Campbell (In the meantime…) and Sheila MacNeill (Sideways) that the University of Strathclyde office for Cetis is closing at the end of the month. Things are slightly up in the air right now but we are hopefully the ‘Glasgow based supergroup’ will reform soon. In the meantime we’ve found ‘other projects’ to keep us busy. In my case the Association for Learning Technology (ALT) are looking to utilise some of my ‘production’ talents helping them create their conference site for ALT-C 2013. Given Stephen Downes is keynoting this year it’s rather fitting that we are going down a connectivist inspired route for this. Just as in my earlier work with the ocTEL open course platform we’ll be deploying the lean mean aggregation machine (FeedWordPress) to pull/push delegate activity with some added situational awareness/organisational features. As with ocTEL we’ll be using the WordPress platform as a base sourcing and joining selected plugins to hopefully give delegates a seamless experience. Given the tight deadline I’m not sure how much I’ll be able to share as I go along but at the very least we’ll publish our recipe under an open source license and you can follow some of the commits to the code repo.

To give you a flavour of what is to come below is a list of the main plugins we are using and some early screenshots (skinning is still on the to do).  

Main plugins (so far)

  • Conferencer – for conference programme (inc. tracks, rooms and sessions)
  • BuddyPress – Delegate profiles (inc member search), conference session groups (allows users to follow and discuss sessions)
  • MailPress – daily email push
  • FeedWordPress – to aggregate conference activity from 3rd party networks

Early Screenshots

Programme view
Programme view

Individual session
Individual session


There have been a couple of very interesting WordPress/FeedWordPress recipe cards for open courses from Anne-Marie Scott for #edcmooc and Martin Weller for #h817open. Below is the ingredient list for #octel. Added to the pot is some homegrown veg which gives us some very personal customisation. A lot of this is to tweak the functionality achieved by using existing plugins that don’t quite do what we want. For example, to allow participants to submit individual artefacts when no rss feed is available I chose the User Submitted Posts plugin. To get this to submit to two categories (instead of the default one), add custom fields to match those use by feedwordpress and change the permalink I needed these extra lines of custom functions.php. Given the amount of investigation required to find the exact right place to add the hook more often than not it feels like it would have been better to code the functionality from scratch.

I’ll leave you with the ingredients for now and next time highlight the recipe… 



Ada FeedWordPress Keyword Filters

Filters posts syndicated through FeedWordPress by keywords. You can do complicated keyword filters using AND, OR, and NOT logics. Plugin will look for user entered keywords in post_title, and post_content

Version 2012.0521 | By CAPitalZ | Visit plugin site

Add Multiple Users

This plugin allows you to add multiple user accounts to your WordPress blog using a range of tools.

Version 2.0.0 | By HappyNuclear | Visit plugin site

Author Avatars List

Display lists of user avatars using widgets or shortcodes.

Version 1.6.1 | By Paul Bearne, Benedikt Forchhammer | Visit plugin site



bbPress is forum software with a twist from the creators of WordPress.

Version 2.2.4 | By The bbPress Community | Visit plugin site

bbPress - Mark as Read

Allows you to mark bbPress topics as read/unread and see all unread topics

Version 0.3 | By Pippin Williamson

bbPress Admin Bar Addition

This plugin adds useful admin links and resources for the bbPress 2.x Forum Plugin to the WordPress Toolbar / Admin Bar.

Version 1.7.1 | By David Decker - DECKERWEB | Visit plugin site | FAQ | Support | Translations | Donate

bbPress Email Notifications

Provide notification emails and controls for bbPress subscriptions, merge, and split functions.

Version 0.3 | By Jennifer M. Dodd

bbPress Search Widget

This Plugin adds a search widget for the bbPress 2.x forum plugin post types independent from the regular WordPress search.

Version 1.2 | By David Decker - DECKERWEB | Visit plugin site | FAQ | Support | Translations | Donate

bbPress Threaded Replies

Add threaded (nested) reply functionality to bbPress.

Version 0.4.3 | By Jennifer M. Dodd

bbP Topic Views

Counts the number of times a topic has been viewed, and allows the administrator to display the count in various places.

Version 0.2 | By GautamGupta | Visit plugin site

Enhanced Text Widget

An enhanced version of the default text widget where you may have Text, HTML, CSS, JavaScript, Flash, and/or PHP as content with linkable widget title.

Version 1.3.4 | By Pomelo Design | Visit plugin site


simple and flexible Atom/RSS syndication for WordPress

Version 2012.1218 | By Charles Johnson | Visit plugin site

FeedWordPress Duplicate Post Filter

Checks DB to see if any previous posts have the same calculated hash

Version 1.5 | By Mark Allen | Visit plugin site

Google Analyticator

Adds the necessary JavaScript code to enable Google's Analytics. After enabling this plugin you need to authenticate with Google, then select your domain and you're set.

Version 6.4.3 | By Video User Manuals | Visit plugin site

Google XML Sitemaps

This plugin will generate a special XML sitemap which will help search engines like Google, Yahoo, Bing and Ask.com to better index your blog.

Version 3.2.9 | By Arne Brachhold | Visit plugin site | FAQ | Support | Donate

Jetpack by WordPress.com

Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.

Version 2.2.2 | By Automattic | Visit plugin site


The WordPress mailing platform. (do not use automatic upgrade!)

Version 5.3 | By Andre Renaut | Visit plugin site

Search bbPress 2.0

Adds bbPress 2.0 to WordPress search results with links back to the forum, topic, and replies.

Version 1.0 | By Stephen Carroll | Visit plugin site

Theme My Login

Themes the WordPress login, registration and forgot password pages according to your theme.

Version 6.2.3 | By Jeff Farthing | Visit plugin site

User Submitted Posts

Enables your visitors to submit posts and images from anywhere on your site.

Version 20130104 | By Jeff Starr | Visit plugin site

WP Category Post List Widget

Lists down Posts filtered by category. You can show thumbnail, modify the HTML structure of the widget and do almost whatever you want. Access it from the Widgets option under the Appearance. The shortcode is [wp_cpl_sc] Check the settings page for more info or check the documentation here

Version 2.0.3 | By Swashata | Visit plugin site

WP Favorite Posts

Allows users to add favorite posts. This plugin use cookies for saving data so unregistered users can favorite a post. Put <?php wpfp_link(); ?> where ever you want on a single post. Then create a page which includes that text : {{wp-favorite-posts}} That's it!

Version 1.5.8 | By Huseyin Berberoglu | Visit plugin site

WP Mail From II

Allows you to configure the default email address and name used for emails sent by WordPress.

Version 1.0.1 | B


Back in August 2012 having surveyed the technology behind a number of connectivist orientated MOOCs (cMOOCs) and I came to the conclusion that:

It’s apparent from the survey of [c]MOOC technology that course teams are taking a loosely joined set of tools that they are comfortable with to facilitate a shared experience with the learner.

I also asked:

Even with the bespoke nature of [c]MOOCs there are still opportunities to start collectively raiding the parts bin. … Given the wide use of WordPress … are there opportunities for [c]MOOC specific themes or plugins?

At the time I highlighted the prevalence of the FeedWordPress plugin for WordPress, which is used to aggregate content from other sites via RSS feeds. Six months on and reading posts mainly from Alan Levine the WordPress parts bins has well and truly been raided. Alan is at an advantage having been involved with the open online course in Digital Storytelling (DS106) and it’s been incredibly useful to see how his recipe has evolved. At the same time others have been turning to WordPress to support their courses. Of note are E-learning and Digital Cultures on Coursera (#edcmooc) , which challenges the division of connectivist (cMOOC) and instructivist (xMOOC) by using the FeedWordPress recipe; and the Open University/OpenLearn/Martin Weller course in Open education (H817).

This last example is particularly interesting because as you’ll discover by reading this post by Martin Weller you’ll see he’s embraced the DIY approach, confronting the challenges of being your own IT support head on. In the post Martin concludes:

One last plea - I joked with Alan that I needed DS106 out of a box. I think I'm serious though - it would be great to have a step by step, idiots guide to installing and setting up a DS106-like environment. The rest of us don't have Alan and Jim's tech skills, so getting to the starting line is difficult. I know they'll say you should invent your own way, but they done so much great work that I don't think they realise just how much expertise they have. A simple installation that let the rest of us get started, would mean we could all go off in different directions then. So any of the DS106 crowd up for it? And I do mean a simple guide, it has to be Weller-proof.

Personally, and at the danger of frustrating Martin further, I think it needs more than just a guide. In my original post I highlighted how aggregation of data was key. This still holds but with all data the next challenge is turning it into something actionable. What pathways might be useful for users to make sense of what is going on.

ds106 blogs hubLooking at H817, EDCMOOC, DS106, ETMOOC and others you have a lovely, gorgeous, wonderful flow of creativity, ideas and reflections, but often this is hard to navigate. Even when you use post excerpts a page of the last 10 posts is at best over 3,000 pixels long. Add in the issue that you might be pulling in content from 100s of sources and those 10 posts could quickly disappear.

Taking a step back a considering what FeedWordPress is doing, its a feed aggregator so are there any cues we can take from feed readers to make it easier to users to browse the content. That was the question I found asking myself when I was recently asked to contribute to ALT’s Open Course in Technology Enhanced Learning (ocTEL) [starts 4th April – still time to sign up].

Take Google Reader for example (don’t even get me started on Google’s ridiculous decision to close this in July). Reader is able to allow you to easily browse 10 posts in 300 pixels and if there are over 10 posts as I scroll down more content is automatically added. If there is anything I look the like of I can click the title to get the content. I can also see the things I’ve read and options to ‘star’ and share (although sharing has been compromised with the introduction of Google+). Feeds can also be organised into folders making it easy to filter content.

Google Reader (sob)

With these ideas in mind I scoured the WordPress plugins database to see how much of this functionality I could recreate. And here’s what I’ve come up with:

I’ve got more tidying up to do with the code before official release but you have have a play here (if you want to test read/favouriting then register here) and here is the current code (very poorly documented).

Open Course Reader

Thoughts and reflections

A group RSS reader

When I started making this custom child theme Google Reader was going to live to a merry old age. Given it’s death in July and having already started my search for a replacement I’m wording if reusing this recipe and my existing feed subscriptions might be the way forward – particularly as the base theme is responsive and works well on mobile. Taking this idea one step further there are potentially some interesting collaborative opportunities beyond an open course context. In particular I was thinking of enabling the WordPress commenting system which would allow discussion of posts, the scenario being your team want to monitor and comment on a set of feeds (I’ve disabled commenting for now as I want people to discuss content on the source post, the issue though is the comment activity is not captured and displayed … one to add to my TODO).

WordPress as an open course platform

Pro – flexibility allows you to find and install themes/plugins to get your desired functionality

Con – flexibility means you’ll spend hours looking for the right plugin then discover it doesn’t quite do what you want and which point you either (if you can) tweak, live with or spend hours more searching for an alternative

Pro – wordpress has numerous well documented internal functions and an architecture to easily add custom functionality (functions.php) and creating themes based on existing templates (child themes)

Con -  custom functionality takes time and can easily break if dependencies like plugins or parent themes change (for example my current child theme is broken by the very latest version of the responsive theme)

Box of bits and no instructions

One of the things at the forefront on my mind is this is potentially an open course platform in a box, but the box contains a random selection of pieces and no instructions. The guidance can be written, its finding the balance between ‘flat pack’ and bespoke.

As always you thoughts and ideas greatly appreciated

BTW  I final got a nice blog registration integrated into FeedWordPress. More about that next time (code is in the reporegister your blog