Our custom WordPress development team recently had the pleasure of building a new E-Learning Portal powered by WordPress and LearnDash for one of our non-profit clients. CureDuchenne is a recognized global leader in research, patient care and innovation for improving and extending the lives of people diagnosed with Duchenne muscular dystrophy. Duchenne muscular dystrophy is the most common lethal childhood disease worldwide and there is nothing more gratifying to work on and be a part of than a project that helps other people, especially children.
One of CureDuchenne's websites, until we rebuilt it with WordPress and LearnDash, was a proprietary Learning Management System (LMS) they were using for their certified physical therapist program. Maintaining their courses and subscribed member base became a daunting task because the LMS web application they were using was difficult to manage and update. CureDuchenne hired AppPresser to build a new, easy to manage, similar looking, easily extendable, LMS for them and to migrate (export and import) all of their existing course and member data from their old proprietary LMS into their new WordPress powered LMS. Check out the all new NeuroMuscularEd.org website!
We chose AppPresser for two development projects among a multitude of competing software development firms for their knowledge of WordPress. Brian and his team were thorough, responsive and took initiative on the projects. Their experience is both deep and wide which was a critical factor since the project requirements include complex WordPress customization as well as integration with other platforms and applications. Their project management and communication proves AppPresser to be a seasoned development firm well accustomed to engaging in enterprise-level projects. We are truly impressed with the work of the AppPresser team on both of our web and app projects and will use them again on future projects.
Jennifer Wallace Valdes
Notable WordPress Plugins Used
Notes for LearnDash - A plugin by SnapOrbital.com adds a cool notes feature so website members can take notes throughout their course engagement experience. Users can search and filter their notes and view all of their notes in one place.
Customizing LearnDash Certificates
In most projects we develop custom WordPress plugins and functionality to fit our client's needs. For this project our client needed a way to update verbiage on the LearnDash generated certificates depending on the state a user lived in and the date they were awarded the certificate. We made a new CPT (Custom Post Type) where administrators could manage "rules" for what gets shown on a user's certificate depending on what conditions are met. Shortcodes can be generated from filtered posts and used in any LearnDash certificate to display custom content per user criteria.
LearnDash Platform Migration
A giant part of this project was migrating all of the content and user data from their old system into our new custom WordPress build. We had to research and understand the old LMS database structure in order to migrate all of that database's data into our WordPress database. A key part to any platform migration is maintaining all of the data relationships and in this case we had to rebuild each user's course progression how LearnDash stores and tracks it. During our imports we store old system ids as meta against any new ids, for example: If a course_id from some proprietary LMS is 5 and we import that course into LearnDash and it gets a post_id of 500, we add post_meta key to post_id 500 called _org_course_id with a value of 5, representing the old system id for that course which any data from the old system that needs to be matched up with that course in the new system will be looking for.
Once we had all of the course data migrated over to WordPress and into the post types and post meta fields LearnDash creates we needed to import users into LearnDash. While looping through each user, we check to see if they need to be added to any of the imported courses, and if they do we use the LearnDash function ld_update_course_access() to do so.
ld_update_course_access( $user_id, $course_id, $remove = false )
The $remove parameter by default is false which will add a given user to a given course. You can set $remove to true if you wanted to remove a user from a course.
user meta _sfwd-course_progress
LearnDash user progression is stored in a WordPress user meta key called "_sfwd-course_progress", the meta value for this user meta field is a serialized array of the courses, lessons, and topics that specific user has completed. If you have an active install of LearnDash and take a look at any user in the user_meta table that has made any course progressions, you will see that the user meta _sfwd-course_progress exists. We had to make sure for every user imported that we maintained their course progressions by updating this _sfwd-course_progress custom user meta field accordingly. It was easy to see that each post_id for each course, lesson, or topic had a corresponding 0 or 1 that indicated if that particular post_id (because courses, lessons, and topics are all posts in the wp_posts table) was completed or not, 0 means no and 1 means yes. Progressions are also tracked in the wp_learndash_user_activity table but the _sfwd-course_progress user meta field is what actually controls progressions.
user meta _sfwd-quizzes
Much like the serialized array to store user course progression the _sfwd-quizzes user meta key has a value that is a serialized array that stores a users quiz information. Our client's old LMS didn't store user quiz scores, time spent, the percentage of questions correct, the answers that were wrong or anything like that like LearnDash does, the old LMS just stored rather a user completed a quiz and the completing date. Because the _sfwd-quizzes array stores particular key value pairs that is used within the application we needed to supply some basic information for LearnDash that we didn't have so we just gave anyone imported into the new system a 100% if they passed that quiz.
user meta course_completed_(post_id)
An important user meta field to take note of when building a custom LearnDash migration script is the user meta key "course_completed_123" with a meta value of the course completion date/time stamp. This user meta field controls if a user has completed a particular course, the post_id of the course in question is part of the meta key and is appended to the end of it's key name.
If you were thinking iOS and Android mobile apps in the app stores powered by our AppPresser LearnDash plugins, I like the way you think! Now that we have a good foundation, our new WordPress and LearnDash build for NeuroMuscularEd.org, we can easily build and launch AppPresser powered mobile apps that would allow your subscribers to access their courses on the app and receive important updates via push notifications.
Hire us for custom LearnDash Development and Support
If you are currently using or have any interest in using a Learning Management System to run your online courses you should definitely consider using LearnDash and hiring us to build and launch your website and mobile apps for you. We also have ongoing support and maintenance options to make sure your LearnDash LMS is always secured and optimized. Please fill out the form below if you are interested in our custom development services or you would like to learn more about our LearnDash projects.
Test Drive AppPresser and LearnDash
Download the "Learn AppPresser" app to see AppPresser and LearnDash in action while learning a little bit about how AppPresser works.
This video includes LearnDash, BuddyPress, blog posts, and in app purchase demos.