How I use WordPress as an LMS

ConnectedBeing a teacher in the modern world means being a teacher who understands that most (if not all) of their students are digital natives. Connectivity is ubiquitous for them. A good teacher can take advantage of this fact and extend learning beyond the classroom. They can offer additional resources, practice, and opportunities to engage with their course content, other classmates, and even their teacher.

There are number of methods to do this: blogs, wikis, Moodle, Twitter, Facebook, and fully developed LMS (learning management system) platforms like Blackboard. I have tried or tested many of these platforms and found that WordPress serves as the ideal LMS for me. WordPress has allowed me to create an excellent resource for myself and my students with unlimited potential. It is part blog, part course site, and part social network that has really transformed the classroom experience.

Below I wish to outline some of the ways I have used WordPress as a powerful teaching and learning tool.


Main Functions functions primarily as a site for students. It is filled with general resources for language learners, as well as specific content for students actually taking my courses. In addition, it serves as a sporadically used blog about teaching and learning. Although I am not a blogger, my current design would allow the co-existence between blog and LMS – one important feature of a powerful learning platform.

Categories are the key. Everything is organized into categories. My main blog is in the category Anthony. Resources have their own categories. And courses too. It is through categories that I am able to organize and separate my site into a blog and LMS platform. Using a category exclusion plug-in, only blog and resource posts are visible on the front page, while course-specific posts are available in their respective categories. Categories also allow the most important and customized feature of my website: the sidebar.

The Sidebar
SidebarI use a simple PHP script that looks at the category name of the category archive page, any post in that category, and even pages in the category. This script then includes a PHP file based on the name. In this file is where I create custom content for each category (and course). So, for example, browsing a conversation course, one would see class tools (such as syllabi, assignments, gradebook, etc.) and resources on the left – but only for that course. Look at the Music page (which is really a category). There are music links in the sidebar, courtesy of the script. I found the having a dynamic sidebar based on categories was essential for properly organizing information on this site. If I want consistent content throughout the site, I could edit the main sidebar info, or adjust the widgets from the dashboard.

Creating custom sidebar content per course serves as a way to encapsulate that course as its own mini homepage within the greater site. In fact, I refer to each course page in class as “our class homepage”. They are essentially separate websites that share the theme and menu of the main site in common.

A lot of custom code went into the dynamic sidebars. This code includes looking to see if you are browsing the category, a single post in the category or a page in the category. There are also some slight minute differences between course page sidebars and other sidebars which required even more customization. The basic code I use is based on conditionals and looks something like this:

<?php if ( is_category() ) { ?>
$category = get_the_category($post->ID);
$incname = $category[0]->category_nicename;
<?php } else { ?><?php } ?>

This code looks at the category name and grabs a PHP file that uses the name (i.e. the file for this category is zListAnthony.php. Each file begins as zList because it shows up at the very bottom of the dashboard theme editor and is therefore kept organized. The zList file must be edited by hand, so knowledge of basic HTML is required. I haven’t tried to find a way to add a visual editor to it, but that would make it much more convenient.

Plugins are an essential part of any WordPress site, this one included. Here is a breakdown of the most important plugins I use:

  • KB Gradebook – afteruploading CSV files, students can view their grades securely. This is an awesome plugin.
  • Dictionary Box – students can quickly translate any word on screen by double clicking
  • Drop Down Post List – I can quickly display all posts of a given category using a simple drop down box
  • Capability Manager – I create unique roles for my courses to help organize my students
  • Emu 2 – I can send group emails based on user roles (i.e. based on the courses students are in)
  • Inline Upload – students can easily upload files to me
  • Register Plus – students fill out required information, including student number
  • Ultimate Category Excluder – exclude course pages from the main feed
  • User Switching – I can view my site as if I were any student (any role) to make sure things work from their end
  • WP Hide Dashboard – they only need to see their profiles, not the entire dashboard
  • WP Native Dashboard – I also offer their profiles in English or Korean
  • WP Roles at Registration – students can select what class they are in when they register

Bad ThumbnailsIssues
My site, of course, is far from perfect – or even complete. A lot of it still must be handcoded, either using HTML or PHP. I haven’t had the time to integrate a more streamlined approach to editing the menu or sidebars. In addition, this site was designed before post thumbnails were built into the WordPress codex, meaning I must manually enter post thumbnails using custom fields.

I also use custom fields to mark certain posts as homework (and display the points the homework is worth) and I suspect this slows down my site a little. In fact, my site is actually quite slow, and I believe this is do to repetitive codes that help keep my sidebars dynamic. There are a lot of conditionals and I think this bogs down the loadtime. I could clean up the code, but don’t really have the time.

The biggest nuisance is that I can’t crosspost, meaning I can’t assign multiple categories to a post. When this is done, WordPress assigns the URL for that post to the lowest category number assigned to it. This has messed up my sidebars. If I posted something in Music and Video and it occured as the first post on the Video page, the sidebar would display for Music because it is the lower category number. That’s a major issue to which I haven’t found a work around.

WordpressWordPress does not function as a perfect LMS, but for my needs it is very close. I have personally used Blackboard, Sakai, and Moodle and find that WordPress is on par with them. Of course, WordPress is not designed to be an LMS and therefore much work and trial and error is needed to make it “education-friendly”. All of these systems offer real-time discussion, forum discussion, lesson downloads, grades, tests and quizzes, webquests, etc. These functions are also all available in WordPress, though they may not always work the way we want.

I think the biggest limitation is from the student’s end: personalization, student feedback and progress tracking. Typical LMS platforms allow students to view their grades in realtime, see teacher feedback, and perhaps even track their own progress. Basically, they create a more personalized interface. I have not found a way to do this with WordPress. Though I am able to offer students their grades via the KB Gradebook plugin, it is not the most convenient method.

I am using WordPress as an extension of real, face-to-face classes. In total, I have about 75 students per semester. Therefore I do not know how WordPress as an LMS would handle larger class sizes or full distance course. I do think, though, that it could be up to the task given the proper server, design, and plugins.

The beauty of WordPress is that it is open-source and pluggable, which means skill and imagination are the biggest limiting factor. Not every teacher is a nerd like me, and until an classroom-ready WordPress can be easily installed and used out of the box for the classroom, it will remain a side note in the world of learning management systems.