A Roadmap for WordPress as LMS

This talk attempts to give real, practical tips – and a roadmap – for developing a Learning Management System for your classroom with WordPress.

This talk was presented at the KOTESOL National Conference in Seoul on May 30, 2015. With this presentation, I tried to reduce the amount of theory (from my last LMS talk) and increase the amount of practical application steps that teachers could use to begin creating their own LMS websites with WordPress.

This slideshow is accompanied by my own “WordPress as LMS Roadmap” paper that gives step-by-step advice and instructions for building a (basic) WordPress LMS.

Although in the talk, I highlighted the major selling points for using WordPress as an LMS, I’ll refer you to my previous LMS talk titled “WordPress as LMS (Learning Management System)” for more information on WHY you might choose WordPress over the other available options. For the remainder of this post, however, I’ll focus on the practical steps involved in building your own class website in WordPress.

The Roadmap

Review: The 6 Things an LMS Needs to Do


  1. Communicate Objects (Courses, Lessons, Modules)
  2. Show Learning Timelines (Syllabus)
  3. Deliver Content (Dripped content = content that is only accessible at specified times)
  4. Assess & Track Student Progress (Quizzes, Tests, Attendance, Participation, Gradebook)
  5. Communicate with Students (Comments, Forums, Wikis, Chat)
  6. Provide Ongoing Resources (in some sort of library or collection)

Step 0: Get a website

You basically have 2 options: FREE or PAID and both have their upsides and downsides:

  1. FREE Advantages and Disadvantages
    1. (+) It’s FREE
    2. (-) Themes, plugins, and design options are limited. Plus, your URL will be either yourclass.wordpress.com or yourclass.edublogs.org – you won’t own your own .com
  2. PAID Advantages and Disadvantages
    1. (+) You can choose what to pay for and how much you’re willing to spend. You can buy your own yourclass.com URL, and can basically make any theme, plugin, and design choices you want
    2. (-) You pay for it. Some highly specialized themes, plugins, or features are sold separately

If you want a completely FREE site, you can still build a very functional classroom website in WordPress. I used a totally FREE installation of WordPress for the first 2 years of my LMS.

The remainder of this post will focus on creating a FREE WordPress LMS, although I will highlight some of the paid options you may wish to consider.

FREE Hosting Options

  1. Go to http://www.wordpress.com and sign up for a FREE account (you can upgrade later)
  2. Go to http://www.edublogs.org and sign up for a FREE account (you can upgrade later)

PAID Hosting Options

I’ve used Dreamhost.com since 2009 and have hosted dozens of personal and client websites there. You can manage every aspect of web hosting from there including:

  1. Setup Step 1: Buying your URL Domain name
  2. Setup Step 2: Installing WordPress with a One-Click Installer
  3. Setup Step 3: Setting up email inboxes @yourclass.com
  4. Support: Dreamhost also has a large Wiki for support for its services and
  5. Support: They have a very helpful support staff and are active on Twitter

If you want to go with Dreamhost, I can offer 2 months of FREE hosting on a year plan if you sign up with this link AND enter the code WPMUJJ as a discount code when you sign up.

Step 1: Communicate Objects (Posts)

After getting setup with a WordPress website and logging into the backend, you have the option to customize your Theme (design), add Plugins (extra functionality), or play with any of your other Settings. It’s probably a good idea to at least familiarize yourself with the WordPress backend menu.

Additionally, you should get to know “The First FIVE Components of WordPress to Understand When You’re Just Starting Out” (click link to view the full description of each). In brief, they are:


  1. Pages
  2. Posts
  3. Categories
  4. Tags
  5. Media

In your LMS class site, you can use each like this:

  1. Pages = semester-long use (static) – use for Class homepages, Syllabus pages, About pages, Resource pages
  2. Posts = daily use (chronological) – use for Class lessons, Homework assignments, or Reviews
  3. Categories = folders – assign each Class a separate folder to store all Class materials within it
  4. Tags = keywords – tag Posts with grammar points, topics, or subject content to allow easy searching and linking of related Posts later
  5. Media = upload your PPTs, PDFs, DOCs, Images, Videos, or other content here – and don’t forget that WordPress also does a GREAT job of supporting native embeds from sites like Twitter and YouTube. Click this link for a complete list of all the filetypes and embeds WordPress supports


  1. Gather your teaching materials and content
  2. Create a NEW Post for every Lesson
  3. Type (or copy-paste) your Lesson into the Editor and give it a Title
  4. Upload class materials and media
  5. Assign a Category using the Name of the Class (Freshmen Conversation 1B, for example)
  6. Add Tags based on the subject matter (be verb, introductions, conjugation rules, etc)
  7. Schedule the Post (if you want it to be available later, not immediately)
  8. Publish the Post

Plugins that may be helpful


  1. Easy Classes
  2. WP Teacher
  3. WP Course Manager (like a course catalog)
  4. EduHack (creates a course catalog showing relationships between courses and prerequisites)
  5. Educator (LMS)
  6. CoursePress (LMS)

Step 2: Learning Timelines (Pages)

After publishing a handful of Posts/Lessons (or possibly before), you may want to create a Class PAGE specifically for containing the Syllabus, Lesson Plans, and Links to those Lessons. The best way to do this is to create a WordPress Page.

Pages are unique in WordPress in that they DO NOT have Categories nor Tags. However, they are hierarchical, so you could create a Freshmen Conversation Page that has multiple “children” like the list below indicates:

  1. Freshmen Conversation
    1. Freshmen Conversation 1A
    2. Freshmen Conversation 1B
    3. Freshmen Tues/Thurs
    4. Freshmen Student Center Class

If you use “Pretty Permalinks” (go to Settings -> Permalinks in the WordPress sidebar menu) URLs of each Page will follow after their “parent” Page like so:

  1. myclass.com/freshmen-conversation/
    1. myclass.com/freshmen-conversation/freshmen-conversation-1a/
    2. myclass.com/freshmen-conversation/freshmen-conversation-1b/
    3. myclass.com/freshmen-conversation/freshmen-tues-thurs/
    4. myclass.com/freshmen-conversation/freshmen-student-center-class/

Therefore, you could simplify your Class Page names under the “parent” Page to only include the section number, date, or location of the class if you want (of course, you could also modify the URL by changing the “slug” under the Title of any Page as well).


  1. Create a Page for each Class
  2. Optionally create one “Category” main Page and Sub-Pages for each Class under that
  3. Copy-paste in your syllabus OR type it up in an unordered list OR table (using a plugin)
  4. Link each Post/Lesson from your Class Category to its syllabus item
  5. OR simply link the entire Class Category to the top of the Page (when students click the main link, it’ll take them to the Category Page which will show a chronological listing of each Post in their Class from most recent to latest)

Plugins that may be helpful


  1. Easy Table (can be used directly in the Post/Page Editor with the syntax required)
  2. TablePress (has its own interface, slightly more complicated and versatile)
  3. Websimon Tables (similar to TablePress with its own interface)
  4. The Events Calendar
  5. Weekly Class Schedule
  6. My Calendar
  7. Booking Calendar (allow students to schedule a meeting with you through your site)
  8. Online Lesson Booking (schedule a 1:1 lesson or meeting)

Step 3: Deliver Content (Scheduled Posts)

“Drip Content” is a term that means “sequential delivery of content.” This basically means that students don’t (or should not) have access to later Lessons before they complete (or are taught) previous Lessons.

This is very useful in fully automated online Learning Management Systems where a course creator simply sets up the system that unlocks later Lessons as users progress through and complete the Lessons in order. There are a number of good plugins to help you accomplish this.

However, for a simpler system – and one in which the teacher is a more active participant as the course progresses, the simplest method for “dripped content” is simply creating and Scheduling each Lesson/Post for the date that Lesson is to be taught or made accessible (this is akin to simply writing a new Lesson and Publishing it every Monday, for example).


  1. Write a Post (Lesson) for you Class
  2. Assign it a Category (Class folder) and add Tags (topics / keywords)
  3. Change the “Publish On” date in the Publish Meta Box
  4. “Schedule” your Post

Plugins that may be helpful


  1. Show/Hide Content at Set Time
  2. Timed Content
  3. Table of Contents Plus
  4. Simple Course Creator
  5. Simple Course Creator – Updates (shows updated course content in a timeline)
  6. WP-Members
  7. Search the Plugin Directory for “Drip Content” or “Show Hide Content”

Step 4: Assess & Track Students (Comments / Authors)

There are numerous ways you can track and assess student work in WordPress. Two of the easiest you can set up with no additional plugins are:

  1. WordPress Comments on Class Posts
  2. Giving students a username and login as an “Author” on your Class site where they can write their own Posts (as essays) which you then edit and approve before they go “Live” on the site


Add Authors

  1. Register new Users on your site by going to the Users -> Add New menu item
  2. Assign student roles as “Author” and register them
    1. In recent versions of WordPress, self-registration seems to be disabled, although there are some plugins available that will allow students to register themselves (see below)
  3. Allow students to login and write essays (Posts) in their Class Category – under a Sub-Category of your choice
  4. Edit their work and Publish it – you can write comments in the Post itself or in a Comment below it
    1. Optionally, don’t Edit the Post yourself, but just leave Comments and assign the student the work of coming back in and fixing their mistakes

Take Comments

  1. Go in to the Settings -> Discussion menu to adjust Comment settings appropriately
    1. “Allow people to post comments on new articles”
    2. “Comment author must fill out name and email”
    3. “Comment author must have a previously approved comment”
  2.  Assign students the homework of reading a Class Post and Commenting on it
    1. Additionally, when I was in grad school, I was assigned not only my original Comment about the article, but 3 “Reply” Comments to other students in the class. This is a good way to get a Discussion going.

Grading Student Work

Personally, without installing any additional plugins into WordPress, I have previously just kept records of student work in Excel spreadsheets or Google Sheets (they’re better for calculating numbers on the fly). However, there are a number of plugins available for grading, quizzes, and other things that you may want to try (see below).

Plugins that may be helpful


  1. Add Multiple Users
  2. AN_Gradebook
  3. Grading System Daxxip (VERY simple – just assign a grade and make it visible on a Post)
  4. Watu Quiz Tool
  5. Quiz Tool Lite
  6. Easy Quiz Player
  7. Exam Matrix
  8. BadgeOS (Give badges for achievements)

Step 5: Communicate with Students (Comments / Plugins)

One thing that WordPress makes exceptionally easy is communication between people. Whether this is using a Commenting system (as discussed above) or Plugins that add extra Social Networking style features, WordPress is has many powerful tools available to customize communication.


  1. Enable Comments on your site (discussed above)
  2. Add Plugins that enhance both your Comments and other forms of communication
    1. Enhance your Comments
    2. Add a Contact form
    3. Add Polls or Surveys
    4. Add Forums, Wikis, or Chats
    5. Add a Social Network plugin

Plugins that may be helpful


  1. Akismet (the #1 spam comment blocking plugin in the world)
  2. Disqus (enhanced Comments)
  3. Contact Form 7 (one of the most popular contact form plugins in the world)
  4. PollDaddy (available on WordPress.com already)
  5. Polls by OpinionStage
  6. WP Survey and Quiz Tool
  7. Survey by POWr
  8. Wiki by WPMU Dev
  9. Chat by WPMU Dev
  10. Pure Chat – Free Live Chat Plugin
  11. iFlyChat – WordPress Chat (allow users to discuss in public and private chat rooms)
  12. bbPress (Official WordPress forum plugin)
  13. BuddyPress (Official WordPress Social Network building plugin)
  14. BuddyPress Docs (add collaborative work spaces to BuddyPress)
  15. BadgeOS Community Add-on (add badges to bbPress and BuddyPress)
  16. BadgeOS Invite Codes Add-on (allow users on BuddyPress to join specified groups with an Invite code)

Step 6: Ongoing Resources

Finally, it is important to keep an organized space for resources and references for your classes. The easiest way to do this is to create a dedicated Resources Page that you continually update as new resources are found or added.

Your WordPress Media Library houses everything you upload to your site (in chronological order) so it can get rather messy after a while. However, there are a few ways you can help yourself keep things organized in the Media Library:

  1. Be sure to NAME your resources appropriately so that they are easy to Search for in the Search box
  2. Install a plugin to help with organization (see below)

Another option for creating a list of Resources that are simply links to various other locations online is to create a Blogroll (list of other blogs) on a page or in a Sidebar Widget.


  1. Appropriately name/label every file you upload
  2. Create a Page called “Class Resources”
    1. You might also create Sub-Pages for each Class like “Freshman 1A Resources”
    2. OR if there will be much overlap, simply divide your Main Page with different Headings for each class
  3. Update your “Class Resources” Page as you find/upload new material
  4. Create a Custom Menu called “Blogroll” or “External Resources” or something
    1. Add links to external sites in this Menu
    2. Add the Menu to a Sidebar Widget (or possibly a Page – you might need a plugin)
  5. Add a Plugin to help you manage everything

Plugins that may be helpful


  1. Enhanced Media Library (allows you to Tag your Media Library files and categorize them)
  2. Media Library Assistant
  3. Eazy Enable Blogroll (brings back the original WordPress default Blogroll)
  4. Open Link (outputs Blogroll links to a Page or Post using a shortcode)
  5. Encyclopedia / Glossary / Wiki
  6. Wiki by WPMU Dev
  7. Xili-Dictionary (Multilingual dictionary)
  8. Google Drive WP Media
  9. Google Drive Embedder
  10. BackWPup Free – WordPress Backup Plugin (backups are important)

Full Fledged Learning Management Systems


  1. LePress (lacking documentation and screenshots)
  2. Educator
  3. Namaste! LMS
  4. CoursePress | PRO Version
  5. LearnDash (Premium)
  6. WooSensei (Premium)
  7. WP Courseware (Premium)
  8. LifterLMS (Premium)

Your Turn

  • Have you ever built a WordPress LMS site? How was your experience? Any more recommendations?
  • For first users, was my walkthrough helpful? Anything unclear?

Leave me a Comment below.