=== LifterLMS - WordPress LMS Plugin === Contributors: thomasplevy, chrisbadgett, d4z_c0nf, pondermatic, lifterlms, codeboxllc Donate link: https://lifterlms.com Tags: learning management system, LMS, membership, elearning, online courses, quizzes, sell courses, badges, gamification, learning, Lifter, LifterLMS License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html Requires at least: 5.5 Tested up to: 5.9 Requires PHP: 7.3 Stable tag: 6.2.0 LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites. == Description == [WordPress LMS plugin][home] - **LifterLMS is a powerful WordPress LMS plugin for WordPress that makes it easy to create, sell, and protect engaging online courses and training based membership websites.** LifterLMS is a complete WordPress LMS plugin, course building and LMS solution that works with any well-coded WordPress theme, modern WordPress blocks, and all the popular WordPress page builders (like Elementor, Beaver Builder, Divi, Gutenberg, etc.). As an engaged WordPress community member, LifterLMS actively encourages and helps other great plugins integrate with LifterLMS like Affiliate WP, Monster Insights, WP Fusion, the most popular form plugins, GamiPress, Astra Pro, the Course Scheduler, and many more. You can also connect your WordPress LMS website to 1,500+ other apps via Zapier. LifterLMS is one of only 11 WordPress plugins listed in the Zapier app directory. As an innovative self-hosted WordPress LMS platfom solution LifterLMS strikes a beautiful balance in being an **all-in-one WordPress LMS solution** while also integrating with other best of breed technologies relevant to course creators and membership site owners. https://www.youtube.com/watch?v=jDVvkipF_pg > **Similar to WooCommerce and WordPress**, As a WordPress LMS plugin, LifterLMS gives back to the open source WordPress community by contributing the core LifterLMS plugin for FREE for the world to benefit from. The core LMS incredibly powerful and customizable by itself with it's course building, membership, gamification system, and more. We believe in free distributed learning for all, and our core free open source WordPress LMS plugin helps further tha vision **LifterLMS exists to democratize education in the digital classroom.** > **At it's core LifterLMS exists to lift up others through education.** You do NOT need a separate ecommerce or membership plugin made by a different company to use LifterLMS! All that and more is included with LifterLMS so you can **avoid the "Software Frankenstein" problem** (too many plugins made by different companies that don't work well together have different levels of support). LifterLMS combines LMS features, course building, membership features, ecommerce feautures, and engagement features into one powerful LMS platform tool. LifterLMS is also known for having a thriving well supported LMS user community through active listening, social engagement, a course library and robust documentation. As a feature complete LMS solution, LifterLMS invests heavily in support and it's industry leading customer success program. LifterLMS doesn't just provide LMS software. LifterLMS builds community and invest heavily in supporting the community of LMS site builders. LifterLMS uses it's own product to create a helpful course library to help the course building community learn. A company should use it's own software beyond simple demos. Course creation software made by course builders! *** > We encourage you to get to know the team of online course building experts behind the WordPress LMS plugin by signing up for a **[$1 temporary _30 Day_ website][try]** on our servers with the core LifterLMS plugin AND all the premium LMS add-ons installed. This LMS demo site allows you to test drive the core LMS & all the add-ons before you invest. You can practice creating an online course with LifterLMS's industry leading course builder. Or simply take a course yourself on your demo site to test the course experience out for yourself. You can even add your other favorite plugins & themes to your demo site so you can see them in action together with the LMS. > Are you ready to **[Try LifterLMS for $1][try]?** 🚀 *** You'll see why so many people like you are starting with or switching from another WordPress LMS or hosted platform to [LifterLMS][Home] for online course creation, membership sites, and remote schools. # **Who Uses LifterLMS?** + **WordPress Freelancers** + **WordPress Agencies** + **WordPress Educators** like Shawn Hesketh at [WP101](https://www.wp101.com) + IT Departments + Marketing Agencies + Entrepreneurs + CEU Publishers + Schools + Organizations + Governments + Enterprise Companies + DIY (Do It Yourself course creators, coaches, and entrepreneurs) + Instructional Designers + WordPress LMS Industry professionals https://www.youtube.com/watch?v=RnZflrWG5YQ # **What Types of People Use LifterLMS for their WordPress LMS?** #### **1) Builders** The WordPress developers, designers & IT pros who build LMS websites and training portals for clients, employers & themselves #### **2) Starters** Do-it-yourself innovators who are looking to create high value online courses, coaching or training based membership websites with a WordPress LMS #### **3) Switchers** People who have outgrown a hosted LMS platform or an incomplete WordPress LMS stack looking for more power, control and better support # **Who Makes The Best WordPress LMS Plugin LifterLMS?** The LifterLMS team is a **diverse group of talented course creators, developers, designers, marketers and entrepreneurs**. Before developing the LifterLMS product we consulted and built custom WWordPress LMS style training based membership sites for clients all over the world. It was through many years experience building high end custom WordPress LMS websites for the expert industry, that the LifterLMS project was born. Because 5 years ago we couldn't find a WordPress LMS plugin that provided a rock solid _all-in-one_ foundation for online course based LMS style training based membership websites, we decided to build LifterLMS and **contribute the core plugin to you and the WordPress community**. > LifterLMS is WordPress LMS, course & membership creation software built by course creators and a talented technical team. We understand WordPress, ecommerce, eLearning, course creation, engagement, gamification, conversion optimization, the website building industry, the LMS industry, and the needs of the online teacher coach, and training professional. You can learn more about **[the people behind LifterLMS here][team]**. # **LifterLMS WordPress LMS By The Numbers ...** + 4,348,041 Course Enrollments powered by LifterLMS + 6,570,731 Course and lesson completions powered by LifterLMS + 86,807 Achievement badges awarded by LifterLMS + 120,728 Certificates awarded by LifterLMS + Over 10,000 active installs of the WordPress LMS plugin + [181 5 star reviews](https://wordpress.org/support/plugin/lifterlms/reviews/?filter=5) # **[LifterLMS Features][features]** > _Start with our core free WordPress LMS plugin and [scale-up][price] as your business grows!_ #### **Make Money Building an Education-Based Business** _LifterLMS plus one payment gateway like [Stripe][stripe] or [PayPal][pp] is powerful enough to get you started on your LMS website journey!_ + Credit card payments + One-time payments + Recurring payments + Payment plans + Unlimited course and membership pricing models + PayPal + Subscriptions + Checkout + Free courses + Course bundles + Private coaching upsells + Course and membership Coupons + Bulk course and membership sales + Affiliate ready + Native course and membership sales pages + Offline course and membership sales + Customizable course and membership enrollment + Country and currency + E-commerce dashboard + Credit card management + Subscription switching + Payment switching + Native Zapier integration #### **Create Courses on Your WordPress LMS Website** + Course multimedia lessons + Course quizzes + Course builder + Drip Content + Course and lesson pre-requisites + Course tracks + Course assignments + Quiz time limits + Student dashboard + Multi-instructor courses + Lesson downloads + Course import & export + Discussion areas + Instructional design + Forum integrations + Graphics pack + Course reviews + Group enrollments for courses and memberships #### **Engage Your Students** + Achievement badges + Certificates + Personalized email + Social learning + Private coaching + Text messaging #### **Offer Memberships** + Sitewide membership + Course bundles + Traditional memberships + Automatic course enrollment + Bulk course enrollment + Content restrictions outside of a course + Members-only payment plans + Private group discussions + Members-only forums #### **Integrate your WordPress LMS with the Tools You Need** + Payment gateways + Email marketing + Forums + Mobile friendly + Use any theme or page builder + Built for compatibility + CRMs + E-learning authoring tools + Tin Can API (xAPI) #### **Secure and Protect Your Content** + Course protection + User account management and registration + Members only content + Course only content + Restricted access + Password management + Self-hosted #### **Own and Manage Your WordPress LMS Platform** + Detailed course, membership, ecommerce, and student reporting + Course gradebook + Email notifications + Bulk course and membership enrollments + Student management + Course and membership access management + Web design management + Branding & typography + WordPress LMS User Roles + Security + Require terms + Scalable + Layout + Testing tools #### **Get Support For Your WordPress LMS Project** + Technical support + 30 Days of live weekly onboarding calls called [Liftoff Sessions][lift] + [Live office hours][oh] + [Free training courses][aca] + [Free training webinars][webinar] + Setup wizard + [Detailed documentation][docs] + Dynamic resources + Demo course + System analyzer + User community + [REST API](https://developer.lifterlms.com/rest-api/) + [Developer ecosystem][devblog] + [Recommended Resources][resources] for course creators #### **Further WordPress LMS Reading** + The [LifterLMS Official Homepage][home] + The [LifterLMS Knowledge base][docs] + The [LifterLMS Blog][blog] + The [LifterLMS Podcast][podcast] + The [LifterLMS Academy][aca] + The [LifterLMS Developer Blog][devblog] # **Extend and Enhance Your LMS with LifterLMS Add-ons** #### **Advanced** _Increase your LMS website and it's training program's value with these engagement add-ons_ + [LifterLMS Advanced Quizzes][aq] + [LifterLMS Assignments][ass] + [LifterLMS Private Areas][pa] + [LifterLMS Social Learning][sl] + [LifterLMS Advanced Video][av] + [LifterLMS Custom Fields][cf] + [LifterLMS Groups][gr] + [LifterLMS PDFs][pdf] #### **Integrations** _Integrate your LMS with the third-party tools you know and love_ + [LifterLMS Stripe][stripe] + [LifterLMS PayPal][pp] + [LifterLMS Authorize.Net][anet] + [LifterLMS WooCommerce][wc] + [LifterLMS ConvertKit][ck] + [LifterLMS MailChimp][mc] #### **LMS Website and User Experience Design Tools** _Make your online course creations and WordPress LMS platform beautiful_ + [LifterLMS Powerpack][pro] + [LifterLMS LaunchPad Theme][lp] #### **Support** _**Our world-class LMS software support has your back** and all of our paid products include priority private support with the LifterLMS support team_ + LifterLMS Support Ticket System, ready for any question you have about your LMS + Liftoff Sessions access with live screensharing to help you get started with the LMS software + [LifterLMS Office Hours][oh] is weekly Mastermind group hosted by LifterLMS CEO Chris Badgett and special guests #### **Save Big on your WordPress LMS with a Bundle** _Save money while unlocking the full potential of your course building and LMS platform_ + Level up your online course LMS website with our ecommerce, design, marketing technology, and automation tools with the [Universe Bundle][universe] + Add even more engagement and student transformation potential to your immersive training programs with our entire suite of products including advanced features used by the best teachers, experts, and coaches with the [Infinity Bundle][infinity] # **Give The Best WordPress LMS Plugin LifterLMS a Try** _There are many ways to take LifterLMS for a test drive before commiting to the WordPress LMS_ + Go ahead and install the free core LifterLMS plugin right now. The free core WordPress LMS plugin is very powerful and customizable. + Get a temporary _30 Day_ website on our servers with the core LifterLMS plugin AND all the premium add-ons installed. This demo website allows you to test drive all the LMS add-ons before you invest. You can also practice creating an online course from scratch and test out the learner experience by enrolling yourself in a course on your demo site. You can even add your other favorite plugins & themes, but this demo site is not something you get to keep after the 30 days are over. **[Try LifterLMS for $1][try]** now. + Another way to test LifterLMS out is to see what the student experience is like. Take a **free** course on how to build a LifterLMS website in 20 minutes. [Take a Free Course][demo] now. # **Scaling LifterLMS From A Simple Online Course...** LifterLMS is incredibly flexible, customizable and scalable. It can be used for a simple one course website, and it can also be used as course marketplace or multi instructor online school. LifterLMS can handle small sites with low course enrollments, and it's also used in large universities and inside fortune 500 corporations for employee training. Unlike hosted LMS software where you would pay monthly for access and pay more as your platform grows, LifterLMS does not charge you more per course. LifterLMS also does not charge you more per instructor or per student or based on your revenue. Some LifterLMS websites are small in terms of course and membership enrollments by design. Some are quite large in the hundreds of thousand of course enrollments. The largest site we know about has 734,415 course enrollments. Wether you are going big or keeping it small, LifterLMS can scale to your needs for your online course, membership site, training portal, or remote school. # **What Others Are Saying About LifterLMS for Course Building, Membership Sites, and Remote Schools...** > _"I've used a number of course creation and delivery platforms over the years. And they were all fine… right up to the day when they weren't. The trouble is, they all want you to package and manage your course the way THEY think you should do it. THEIR feature set. THEIR way to do it. **Now I host all my courses on LifterLMS. TOTALLY different experience, because I'm free to do things MY way. I've never yet hit a wall where LifterLMS didn't enable me to do things the way I wanted.** Love it! Great support and community too."_ > _**Nick Usborne**, Teacher, Entrepreneur_ *** > _“**WP101.com serves more than 30,000 members**, so it’s no small challenge to migrate to a new membership plugin. **We spent more than a year carefully evaluating dozens of LMS and membership plugins before we finally discovered LifterLMS (a membership plugin and LMS plugin combined into one). It was the only plugin that checked all the boxes for our needs for course creation and membership functionality.** And the LifterLMS team also shares our passion for creating better online learning experiences. In particular, we deeply resonate with their goal of restoring the human touch to online learning—something that is absent from most online courses today.”_ > _**Shawn Hesketh**, Owner, WP101_ *** > _"As a former School Teacher, professional User Experience Designer, and current online course creator – I can honestly attribute much of our success to LifterLMS and it’s consideration for multiple learning modalities, the LMS UI/UX out of the box, and natural student Engagement opportunities. **In less than 10 months we’ve gone from $0 to $300K in revenue with LifterLMS** playing a huge part in that!! I’m looking forward to everything that comes next from the creators of LifterLMS!!"_ > _**Sarah Lorenzen**, Teacher, Entrepreneur_ *** > _"LifterLMS has been **the best decision we have made** towards the build out of our course library, online Learning Management System site, and community. The breadth and depth of what LifterLMS offers in a few WordPress plugins exceeds anything else we evaluated as it includes: easy course construction, integrated eCommerce, community capabilities, gamification and the support for delivery of 1-on-1 coaching collaboration services. Lifter also has pre-built integrations with other key WordPress technologies we wanted to use. LifterLMS has attracted a solid community and support network of leading experts to help guide anyone who wants to transform the world or their industry with online training. **Chris and the Lifter team are real people, and they care**."_ > _**Michael Wolf**, CEO, emPowering NOW LLC (Golden XPR)_ *** > _"I bought/installed LifterLMS yesterday then spent the day having a blast! Two years ago I started writing a book, which morphed into wanting to present the material online in a more interactive way. I started my website from scratch in January and installing the WordPress LMS plugin was a milestone moment! A milestone moment that turned out to be one joy right after the other! I'm always amazed when something is made easy! The LifterLMS product is amazing!! Power to the people! **Really quite extraordinary to have something so helpful be able to be in the hands of regular folk**."_ > _**Margot Worthy**, Author, Teacher_ # **LifterLMS in Action** + [Success Stories][case] — Discover these amazing stories and accomplishments from our community of WordPress LMS website builders. + [Showcase][sho] — Check out these WordPress LMS websites using LifterLMS # **Join Our Growing Community of Course Builders, Membership Site Owners, and WordPress LMS Professionals** > When you download LifterLMS, you **join a thriving community** of education entrepreneurs, course creators, developers, LMS professionals, and WordPress enthusiasts. We’re one of the fastest growing open source eLearning communities online, and you are welcome here in our LMS community. If you’re interested in contributing to LifterLMS, head over to the [LifterLMS GitHub Repository][git] to find out how you can pitch in on the open source WordPress LMS software. Want to add a new language to LifterLMS? Swell! You can contribute language translations to the LMS at [translate.wordpress.org][translate]. Also I'd like to invite you to the [LifterLMS VIP Facebook group][facebook] so you can check out what other LifterLMS users and course creators are up to and ask questions to the LMS website building community. We also have an engaged [LifterLMS Slack community][slack] with live developer office hours if you would like to connect in Slack. **The mission of LifterLMS is to democratize education in the digital classroom. Our vision is to lift up others through education.** We invite you to **let us guide you to a successful training platform** through our WordPress LMS technology, course library, and support systems. We want you to avoid the common online course & general LMS website building mistakes, avoid the Software Frankenstein problem, and NOT waste any time bringing your WordPress LMS website to life. > LifterLMS helps you **ACCELERATE**. # **Here's What I'd Like You To Do Next ...** Install the free LifterLMS plugin on your website from here on WordPress, then ... **[Try out all the premium WordPress LMS add-ons for $1 by signing up >>HERE<<][try]** 🚀 [home]: https://lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [price]: https://lifterlms.com/pricing/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [docs]: https://lifterlms.com/docs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [blog]: http://blog.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [devblog]: https://make.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [podcast]: http://podcast.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [git]: https://github.com/gocodebox/lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [demo]: https://demo.lifterlms.com/course/how-to-build-a-learning-management-system-with-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [translate]: https://translate.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [facebook]: https://www.facebook.com/groups/lifterlmsvip/ [slack]: https://join.slack.com/t/lifterlms/shared_invite/enQtMzk3ODczNjc4Mjc3LTBlMmEzMWYyOTIwMDU3NDc2MmRhNGIxNGE0Nzc1OWIxZjg1OGVhM2E5YTkwYzZmMmM1ZTU4MDQxYjVlZDYyZTE [sho]: https://lifterlms.com/showcase/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [case]: https://lifterlms.com/success/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [lift]: https://blog.lifterlms.com/liftoff/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [aca]: https://academy.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [resources]: https://lifterlms.com/recommended-resources/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [team]: https://lifterlms.com/our-team/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [webinar]: https://lifterlms.com/lifterlms-webinars/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [anet]: https://lifterlms.com/product/authorize-net/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [aq]: https://lifterlms.com/product/advanced-quizzes//?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [ass]: https://lifterlms.com/product/lifterlms-assignments//?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [av]: https://lifterlms.com/product/advanced-video/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale [dfy]: https://lifterlms.com/dfy/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [cf]: https://lifterlms.com/product/custom-fields/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [ck]: https://lifterlms.com/product/lifterlms-convertkit/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [gr]: https://lifterlms.com/product/groups/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [infinity]: https://lifterlms.com/product/infinity-bundle/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [lp]: https://lifterlms.com/product/launchpad/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [mc]: https://lifterlms.com/product/mailchimp-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [oh]: https://lifterlms.com/product/office-hours/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [pa]: https://lifterlms.com/product/private-areas/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [pdf]: https://lifterlms.com/product/lifterlms-pdfs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [pp]: https://lifterlms.com/product/paypal-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [pro]: https://lifterlms.com/product/lifterlms-pro/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [sl]: https://lifterlms.com/product/social-learning/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [stripe]: https://lifterlms.com/product/stripe-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [try]: https://lifterlms.com/product/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [universe]: https://lifterlms.com/product/universe-bundle/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [wc]: https://lifterlms.com/product/woocommerce-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [features]: https://lifterlms.com/features/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [feature-lms]: https://lifterlms.com/features/lms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [feature-ecomm]: https://lifterlms.com/features/e-commerce/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [feature-membership]: https://lifterlms.com/features/membership/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale [feature-engagement]: https://lifterlms.com/features/engagement/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale == Installation == #### Minimum System Requirements LifterLMS Requires + PHP 7.2 or later + MySQL 5.6 or later + WordPress 4.0 or later Visit our [full system requirements](https://lifterlms.com/docs/minimum-system-requirements-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) for additional information. #### Automatic Installation This is the simplest way to install LifterLMS as it utilizes WordPress to handle file transfers and you never need to leave the web browser or admin panel. 1. Log in to your WordPress dashboard. 2. Navigate to Plugins -> Add New 3. In the search field type "LifterLMS" and click "Search Plugins" 4. Once you've located LifterLMS click "Install Now" 5. Once installation is complete, click "Activate" #### Manual Installation To manually install LifterLMS you'll need to download the zip file using the "Download" link on this screen. You'll then need to use FTP to manually upload the files to the proper directory on your webserver. Please see this [WordPress Codex document](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation) for full instruction on Manual Plugin Installation. #### Setup Wizard After installing LifterLMS for the first time you will be redirected to the Setup Wizard. This wizard will walk quickly configure LifterLMS so you can get to course creating as quickly as possible. At the conclusion you'll have the option to import a sample course. You can return to the setup wizard at any time by following [these steps](https://lifterlms.com/docs/rerun-lifterlms-setup-wizard/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). == Frequently Asked Questions == #### Where do I buy LifterLMS add-ons or bundles? You can explore the individual add-ons [here](https://lifterlms.com/store/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) or save BIG with a [bundle](https://lifterlms.com/product-category/bundles/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) #### Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread? First, make sure that you're running the latest version of LifterLMS. And if you've got any other LifterLMS extensions or themes, make sure those are running the most current version as well. The most common issues we see are either plugin conflicts, theme conflicts, or outdated servers. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just LifterLMS is running on your site. If the issue persists from there, revert to the default Twenty Fifteen theme. If the issue is resolved after deactivating a specific plugin or your theme, you'll know that is the source of the conflict. If it is a hosting issue, contact your web host and make sure they’re running the most current version of PHP. Also be sure to check out the official LifterLMS [Knowledge Base](https://lifterlms.com/docs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). #### I'm still stuck. Where do I go to file a bug or ask a question? Users of the free LifterLMS should post their questions in the plugin's WordPress.org forum. If you find you're not getting support in as timely a fashion as you wish, you might want to consider [purchasing a product from LifterLMS](https://lifterlms.com/pricing/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) so you can access the LifterLMS support team. If you're already a LifterLMS customer, you can simply log into your account and contact the support team directly on the [LifterLMS website](https://lifterlms.com/my-account/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). We can provide a deeper level of support in there and address your needs on a daily basis during the work week. Generally, except in times of increased support loads, we reply to all comments within 12 business hours. #### LifterLMS is awesome! Can you set it all up for me? LifterLMS offers technical support, but we do not offer custom website development services. However, we do recommend third party LifterLMS Experts who can help with web design, web development, instructional design or marketing for a fee. Click here to visit the [LifterLMS Experts page](https://lifterlms.com/experts/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). #### I'm interested in LifterLMS add-ons, but there are a few questions I've got before making the purchase. Can you help me get those addressed? Absolutely. If you're not finding your questions answered on the product pages, you can ask your presales questions through this [contact form](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). You can also connect live with a member of our team [here](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). #### What add-ons are available for LifterLMS, and where can I read more about them? You can find a full list of official LifterLMS Add-ons [here](https://lifterlms.com/store/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) #### I have a feature idea. What's the best way to tell you about it? We care about your feature ideas and what you have to say. You can [request a feature](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale), [vote on existing feature requests](?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale), and checkout the [product roadmap](https://lifterlms.com/roadmap/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). #### I still have questions. Where can I find answers? Be sure you’ve taken the free tutorial training video course: [How to Create an Online Course with LifterLMS](http://demo.lifterlms.com/course/how-to-build-a-learning-management-system-with-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). We also encourage you to get to know us by signing up for a $1 temporary _30 Day_ website on our servers which comes with the core LifterLMS plugin all our add-ons intalled. This demo allows you to test drive all the add-ons before you invest. Check it out here: **[Try LifterLMS for $1](https://lifterlms.com/product/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)**. #### I'm interested in contributing to LifterLMS, how can I start? LifterLMS is an open-source project. We manage our team, developers, issues, and code on [GitHub](https://github.com/gocodebox/lifterlms/). We welcome contributions of all kinds, anyone can contribute even if you don't write code! Check out our [Contributor's Guidelines](https://github.com/gocodebox/lifterlms/blob/master/.github/CONTRIBUTING.md) to get started. #### I found a security vulnerability or issue, how can I report it to the team? The LifterLMS team takes security issues and vulnerabilities very seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions. Please contact team@lifterlms.com to report a security vulnerability. You can review our full security policy at [https://lifterlms.com/security-policy](https://lifterlms.com/security-policy). == Screenshots == 1. LifterLMS Courses 2. LifterLMS Pricing Tables 3. LifterLMS Checkout 4. LifterLMS Lessons 5. LifterLMS Achievement Earned 6. LifterLMS Achievement Badges 7. LifterLMS Quiz Results 8. LifterLMS Student Dashboard 9. LifterLMS Certificates 10. LifterLMS Sales Reporting 11. LifterLMS Student Reporting 12. LifterLMS Enrollment Reporting 13. LifterLMS Sidebar Widgets 14. LifterLMS Subscription Management 15. LifterLMS Settings 16. LifterLMS Course Builder 17. LifterLMS Lesson Settings 18. LifterLMS Engagements 19. LifterLMS Email Engagements 20. LifterLMS Course Access Plans 21. LifterLMS Update Upcoming Order Details 22. LifterLMS Lock Down Non LMS Content with Memberships 23. LifterLMS Membership Course Bundles and Auto Enrollment 24. LifterLMS Business to Business Bulk Enrollment Activations with Vouchers == Changelog == = v6.2.0 - 2022-03-30 = ##### Updates and Enhancements + Changed the `llmsStudentsSelect2()` JavaScript function to use the LifterLMS REST API "list students" endpoint instead of the `LLMS_AJAX_Handler::query_students()` PHP function. + Upgraded LifterLMS Blocks to [v2.4.1](https://make.lifterlms.com/2022/03/30/lifterlms-blocks-version-2-4-1/). ##### Bug Fixes + Fixed issue with hidden checkboxes on LifterLMS forms. + Fixed a compatiblity issue with the Divi Theme Builder ignoring access restrictions when using template with custom body. [#2063](https://github.com/gocodebox/lifterlms/issues/2063) + Fixed an error encountered on the Engagements > Certificates screen when using the BuddyBoss theme. [#2080](https://github.com/gocodebox/lifterlms/issues/2080) ##### Deprecations + Deprecated `LLMS_AJAX_Handler::query_students()`. Use the [REST API list students](https://developer.lifterlms.com/rest-api/#tag/Students/paths/~1students/get) endpoint instead. ##### Developer Notes + Added new filter `llms_template_loader_priority` to control the priority of the `template_include` hook callback used to load restricted content templates. = v6.1.0 - 2022-03-23 = ##### Upcoming PHP Version Requirement Change **LifterLMS will drop support for PHP 7.3 by May, 2022. This will raise the minimum supported PHP version to 7.4. PHP 7.3 reached its official [end of life](https://www.php.net/eol.php) on December 6, 2021. If you are still using PHP 7.3 please upgrade to PHP 7.4 or later as soon as possible.** ##### New Features + Added the `{earned_date}` certificate merge code. ##### Updates and Enhancements + Changed the label for the `{current_date}` certificate merge code from 'Earned Date' to 'Current Date'. + Updates LifterLMS REST to [v1.0.0-beta.24](https://make.lifterlms.com/2022/03/17/lifterlms-rest-api-version-1-0-0-beta-24/). ##### Bug Fixes + Fixed an issue encountered when editing an order with a completed payment plan. [#2067](https://github.com/gocodebox/lifterlms/issues/2067) + Fixed access of protected LLMS_Abstract_Query properties. = v6.0.0 - 2022-03-08 = **This major release of LifterLMS focuses on improving the experience of creating, designing, and managing achievements and certificates: use the block editor to design certificates, sync awards with their templates, award achievements and certificates on demand without requiring an engagement trigger, and [much more](https://lifterlms.com/docs/getting-started-with-lifterlms-6-0/). In addition, this release removes a significant number of previously deprecated classes, methods, and functions. Please read the full Breaking Changes sections for more information on removed code.** ##### New Features + The block editor is now enabled by default for certificates when using WordPress versions 5.8 and later. + Existing certificates are marked as "legacy" and will continue to use the classic editor until migrated. + To migrate a certificate, click the "Migrate Certificate" button. This will force the certificate's content into blocks. + A number of new settings are available to certificates when using the block editor: + Set the certificate's display (and print) size using common paper sizes such as US Letter, US Legal, A3, A4, and more. + Set the certificate's display orientation: portrait of landscape. + Set the certificate's inner margins. + Set the certificate's background color. + A new block, the Certificate Title Block, has been made available to certificates. + The block works like a WordPress core Heading Block with added options for selecting from a few display fonts (provided by Google Web Fonts). + The block controls the title of awarded certificates. + Added the ability for administrators and LMS managers to edit earned certificates/achievements from the students reporting screen, as well as award new certificates/achievements to students. + Added the ability to sync awarded certificates with the template used to generate them. [#1078](https://github.com/gocodebox/lifterlms/issues/1078) + The `post_name` of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers. + Added certificate global options for the default size of new certificates and certificate templates. + Certificate and email template merge code buttons now include [llms-user] information shortcodes. + Added certificate sequential ID functionality merge code. + Added a link to return to the student dashboard when viewing an awarded certificate. [#1959](https://github.com/gocodebox/lifterlms/issues/1959) + Provide additional information to hooks on the student single course reporting screen. ##### Updates and Enhancements + Added new default images for use with achievements and certificates. + The site-wide default images can be customized on the admin panel under Settings -> Engagements. + The old default images will automatically be used for legacy certificates and can be forced by filtering `llms_use_legacy_engagement_images`. [#1081](https://github.com/gocodebox/lifterlms/issues/1081) + Certificates no longer use the `header.php` and `footer.php` files from the site's theme, instead custom templates (`templates/certificates/header.php` and `templates/certificates/footer.php`) are used instead. These templates are minimal and exclude theme wrappers which reduces the visual conflicts encountered from theme wrappers, backgrounds, and more, especially when printing certificates. [#463](https://github.com/gocodebox/lifterlms/issues/463) + The achievements and certificates dashboard endpoints are now paginated. [#669](https://github.com/gocodebox/lifterlms/issues/669) + Added pagination to achievement and certificate reporting pages. + The URL of earned user certificates has been changed from "my_certificate" to "certificate". Requests to the old url are automatically redirected to the new url, including instances where the URL slug has been translated. + The URL of certificate template previews has been changed from "certificate" to "certificate-template". + The certificate merge code, `{first_name}`, now outputs an empty string in favor of falling back to the user's nickname when there is no first name for the user. [#1640](https://github.com/gocodebox/lifterlms/issues/1640) + The look and behavior of the certificate {{MINI_CERTIFICATE}} pop-over notification merge code now displays a placeholder preview of the certificate in favor of attempting to render a tiny version of the actual certificate. [#1950](https://github.com/gocodebox/lifterlms/issues/1950) + The coupon code in the student's order details table is now wrapped in a `` tag instead of an `` tag. [#2033](https://github.com/gocodebox/lifterlms/issues/2033) + Updates LifterLMS REST to [v1.0.0-beta.23](https://make.lifterlms.com/2022/02/23/lifterlms-rest-api-version-1-0-0-beta-23/). + Updated LifterLMS Blocks to [version 2.4.0](https://make.lifterlms.com/2022/02/25/lifterlms-blocks-version-2-4-0/). ##### Bug Fixes + Delayed engagements are automatically unscheduled when the related post is deleted. + A disabled student dashboard endpoint will no longer display the endpoint's summary on the main dashboard page. [#535](https://github.com/gocodebox/lifterlms/issues/535) + Prior to sending a delayed engagement the recipient's enrollment in the related post is verified resulting the engagement not being triggered if the recipient's enrollment has been terminated. [#290](https://github.com/gocodebox/lifterlms/issues/290) + Post search filter boxes on various post tables will now longer display a link to the selected post. + Basic notification code is no longer loaded on the admin panel. + Fixed the label hover on picture type quizzes in some themes. [#2015](https://github.com/gocodebox/lifterlms/issues/2015) ##### Database Migration + A database migration is required when upgrading from versions earlier than 6.0.0. A description of the required updates can be found at [https://lifterlms.com/docs/lifterlms-database-updates/#600](https://lifterlms.com/docs/lifterlms-database-updates/#600). ##### Deprecations + Public access to properties of the abstract `LLMS_Database_Query` has been deprecated. + Public access to class property `LLMS_Database_Query::$found_results`. The property is no longer publicly writable but can be read via `LLMS_Database_Query::get_found_results()`. + Public access to class property `LLMS_Database_Query::$max_pages`. The property is no longer publicly writable but can be read via `LLMS_Database_Query::get_max_pages()`. + Public access to class property `LLMS_Database_Query::$number_results`. The property is no longer publicly writable but can be read via `LLMS_Database_Query::get_number_results()`. + Public access to class property `LLMS_Database_Query::$results`. The property is no longer publicly writable but can be read via `LLMS_Database_Query::get_results()`. + Public access to class property `LLMS_Database_Query::$query_vars`. The variable as a whole cannot be publicly accessed, instead use `LLMS_Database_Query::get()` and `LLMS_Database_Query::set()` to read and write to the array. + The above changes were made to the abstract class `LLMS_Database_Query` but the following concrete classes that utilize the abstract are also affected by this change: `LLMS_Query_User_Postmeta`, `LLMS_Student_Query`, `LLMS_Query_Quiz_Attempt`, `LLMS_Events_Query`, and `LLMS_Notifications_Query`. + Class `LLMS_Achievement_User` is deprecated with no direct replacement. + Method `LLMS_Achievement::is_enabled()` is deprecated with no replacement. + Method `LLMS_Achievement::get_blogname()` is deprecated with no replacement. + Method `LLMS_Achievement::format_string()` is deprecated with no replacement. + Method `LLMS_Achievement::get_title()` is deprecated with no replacement. + Method `LLMS_Achievement::get_content()` is deprecated with no replacement. + Method `LLMS_Achievement::get_content_html()` is deprecated with no replacement. + Method `LLMS_Achievement::create()` is deprecated with no replacement. + Method `LLMS_Achievements::trigger_engagement()` is deprecated in favor of `LLMS_Engagement_Handler::handle_achievement()`. + Class `LLMS_Certificate` is deprecated with no direct replacement. + Method `LLMS_Certificate::is_enabled()` is deprecated with no replacement. + Method `LLMS_Certificate::get_blogname()` is deprecated with no replacement. + Method `LLMS_Certificate::format_string()` is deprecated with no replacement. + Method `LLMS_Certificate::get_title()` is deprecated with no replacement. + Method `LLMS_Certificate::get_content()` is deprecated with no replacement. + Method `LLMS_Certificate::get_content_html()` is deprecated with no replacement. + Method `LLMS_Certificate::get_title()` is deprecated with no replacement. + Method `LLMS_Certificates::trigger_engagement()` is deprecated in favor of `LLMS_Engagement_Handler::handle_certificate()`. + Method `LLMS_Engagements::init()` is deprecated with no replacement. + Method `LLMS_Engagements::handle_achievement` is deprecated in favor of `LLMS_Engagement_Handler::handle_achievement`. + Method `LLMS_Engagements::handle_certificate` is deprecated in favor of `LLMS_Engagement_Handler::handle_certificate`. + Method `LLMS_Engagements::handle_email` is deprecated in favor of `LLMS_Engagement_Handler::handle_email`. + Method `LLMS_Database_Query::set_found_results()` is deprecated. + Class `LLMS_Achievement_User` is deprecated with no direct replacement. + Method `LLMS_Achievement_User::has_user_earned()` is deprecated with no replacement. + Method `LLMS_Achievement_User::init()` is deprecated with no replacement. + Method `LLMS_Achievement_User::trigger()` is deprecated with no replacement. + Method `LLMS_Achievement_User::get_content_html()` is deprecated with no replacement. + Class `LLMS_Certificate_User` is deprecated with no direct replacement. + Method `LLMS_Certificate_User::init()` is deprecated with no replacement. + Method `LLMS_Certificate_User::trigger()` is deprecated with no replacement. + Method `LLMS_Certificate_User::get_content_html()` is deprecated with no replacement. + Method `LLMS_Certificate_User::set_shortcode_user()` is deprecated with no replacement. + Engagement debug logging is removed. Use `llms_log()` directly instead. + Filter `llms_db_query_get_default_args` is deprecated in favor of `llms_{$this->id}_query_get_default_args`. + Filter `llms_certificate_has_user_earned` is deprecated in favor of `llms_earned_certificate_dupcheck`. + Unused public class property `LLMS_Achievements::$content` is deprecated with no replacement. + Method `LLMS_Admin_Post_Types::meta_metabox_init()` is deprecated with no replacement. + The site options `lifterlms_certificate_bg_img_width`, `lifterlms_certificate_bg_img_height`, and `lifterlms_certificate_legacy_image_size` are now used only for certificates and certificate templates created using the classic editor. + The settings, found on the Engagements Settings screen, are hidden by default. + During the database upgrade from versions earlier than 6.x, an site option, `llms_has_legacy_certificates` is added when at least one certificate is found. This option will display the settings so they can continue to be used for legacy certificates. + After migrating all certificates on a site, the settings will still display. In order to remove them from the screen a developer can either delete the option `llms_has_legacy_certificates` or return `false` from the filter `llms_has_legacy_certificates`. + Method `LLMS_Engagements::handle_certificate` is deprecated in favor of `LLMS_Engagement_Handler::handle_certificate`. [#290](https://github.com/gocodebox/lifterlms/issues/290) + Method `LLMS_Engagements::handle_achievement` is deprecated in favor of `LLMS_Engagement_Handler::handle_achievement`. [#290](https://github.com/gocodebox/lifterlms/issues/290) + The constant `LLMS_ENGAGEMENT_DEBUG` is deprecated with no replacement. + Engagement debugging via `LLMS_Engagements::log` is deprecated. Use `llms_log()` instead. + Method `LLMS_Engagements::handle_email` is deprecated in favor of `LLMS_Engagement_Handler::handle_email`. + Filter `lifterlms_register_post_type_llms_my_certificate` is deprecated in favor of `lifterlms_register_post_type_my_certificate`. + Deprecated the misspelled protected method `LLMS_Database_Query::preprare_query()` and replaced with `LLMS_Database_Query::prepare_query()`. + Class method `LLMS_Events_Query::preprare_query` replaced with `LLMS_Events_Query::prepare_query()`. + Class method `LLMS_Query_Quiz_Attempt::preprare_query` replaced with `LLMS_Query_Quiz_Attempt::prepare_query()`. + Class method `LLMS_Query_User_Postmeta::preprare_query` replaced with `LLMS_Query_User_Postmeta::prepare_query()`. + Class method `LLMS_Student_Query::preprare_query` replaced with `LLMS_Student_Query::prepare_query()`. + Class method `LLMS_Notifications_Query::preprare_query` replaced with `LLMS_Notifications_Query::prepare_query()`. + Class method `LLMS_Notifications_Query::preprare_query` replaced with `LLMS_Notifications_Query::prepare_query()`. [#859](https://github.com/gocodebox/lifterlms/issues/859) ##### Breaking Changes + Removed FSE template: `templates/block-templates/single-certificate.html`. + Removed the deprecated `LLMS()` function in favor of the `llms()` function. + Removed the deprecated the `LLMS_SendWP::do_remote_install()` method in favor of the `LLMS_Abstract_Email_Provider::do_remote_install()` method. + Removed the deprecated `LLMS_Abstract_Email_Provider::output_css()` method. + Removed the deprecated `LLMS_Abstract_Generator_Posts::increment()` method. + Removed the deprecated `LLMS_Admin_Users_Table::load_dependencies()` method. + Removed the deprecated `LLMS_Admin_Import::localize_stat()` method. + Removed the deprecated `LLMS_Admin_Notices_Core::check_staging()` method. + Removed the deprecated `LLMS_Admin_Setup_Wizard::generator_course_status()` method. + Removed the deprecated `LLMS_Admin_Setup_Wizard::output_step_html()` method. + Removed the deprecated `LLMS_Admin_Setup_Wizard::scripts()` method. + Removed the deprecated `LLMS_Admin_Setup_Wizard::watch_course_generation()` method. + Removed the deprecated `llms_format_decimal()` function. + Removed the deprecated `llms_set_person_auth_cookie()` function. + Removed the deprecated `LLMS_Course::sections` property. + Removed the deprecated `LLMS_Course::sku` property. + Removed the deprecated `LLMS_Frontend_Assets::enqueue_inline_pw_script()` method. + Removed the deprecated `LLMS_Frontend_Assets::enqueue_inline_script()` method. + Removed the deprecated `LLMS_Frontend_Assets::is_inline_script_enqueued()` method. + Removed the deprecated `LLMS_Generator::add_custom_values()` method. + Removed the deprecated `LLMS_Generator::add_custom_values()` method. + Removed the deprecated `LLMS_Generator::format_date()` method. + Removed the deprecated `LLMS_Generator::get_author_id_from_raw()` method. + Removed the deprecated `LLMS_Generator::get_default_post_status()` method. + Removed the deprecated `LLMS_Generator::get_generated_posts()` method. + Removed the deprecated `LLMS_Generator::increment()` method. + Removed the deprecated `llms__created` action hook from the `LLMS_Abstract_Database_Store::create()` method. + Removed the deprecated `llms__deleted` action hook from the `LLMS_Abstract_Database_Store::delete()` method. + Removed the deprecated `llms__updated` action hook from the `LLMS_Abstract_Database_Store::update()` method. + Removed the deprecated `llms_user_removed_from_membership_level` action hook from the `LLMS_Student::unenroll()` method. + Removed the deprecated and misspelled `$purchaseable` global variable in the `lifterlms_template_pricing_table()` function. + Removed the deprecated and misspelled `$purchaseable` global variable in the `templates/product/pricing-table.php` file. + Removed the deprecated `LLMS_Frontend_Password` class. + Removed the deprecated `LLMS_Install::db_updates()` method. + Removed the deprecated `LLMS_Install::update_notice()` method. + Removed the deprecated `LLMS_Notifications::dispatch_processors()` method. + Removed the deprecated `llms_processors_async_dispatching` filter hook from the `LLMS_Notifications::__construct()` method. + Removed the deprecated `LLMS_Notifications::$_instance` property. + Removed the deprecated `LLMS_Person_Handler::register()` method. + Removed the deprecated `LLMS_Person_Handler::sanitize_field()` method. + Removed the deprecated `LLMS_Person_Handler::update()` method. + Removed the deprecated `LLMS_Person_Handler::validate_fields()` method. + Removed the deprecated `LLMS_Person_Handler::voucher_toggle_script()` method. + Removed the deprecated `templates/admin/notices/db-update.php` file. + Removed the deprecated `templates/admin/notices/db-updating.php` file. + Removed the deprecated `llms_usernames_blacklist` filter hook in the `llms_get_usernames_blocklist()` function. + Removed the deprecated `includes/libraries/wp-background-processing/index.php` file. + Removed the deprecated `includes/libraries/wp-background-processing/wp-async-request.php` file. + Removed the deprecated `includes/libraries/wp-background-processing/wp-background-process.php` file. + Removed the deprecated `LLMS_Section::get_next_available_lesson_order()` method. + Removed the deprecated `LLMS_Section::get_order()` method. + Removed the deprecated `LLMS_Section::get_parent_course()` method. + Removed the deprecated `LLMS_Section::set_parent_course()` method. + Removed the deprecated `LLMS_AJAX::check_voucher_duplicate()` method. + Removed the deprecated `LLMS_AJAX::get_ajax_data()` method. + Removed the deprecated `LLMS_AJAX::register_script()` method. + Removed the deprecated `LLMS_Interface_Post_Audio` interface. + Removed the deprecated `LLMS_Interface_Post_Sales_Page` interface. + Removed the deprecated `LLMS_Interface_Post_Video` interface. + Removed the deprecated `LLMS_Achievements::$_instance` property. + Removed the deprecated `LLMS_Certificates::$_instance` property. + Removed the deprecated `LLMS_Emails::$_instance` property. + Removed the deprecated `LLMS_Engagements::$_instance` property. + Removed the deprecated `LLMS_Events::$_instance` property. + Removed the deprecated `LLMS_Grades::$_instance` property. + Removed the deprecated `LLMS_Integrations::$_instance` property. + Removed the deprecated `LLMS_Payment_Gateways::$_instance` property. + Removed the deprecated `LLMS_Processors::$_instance` property. + Removed the deprecated `LLMS_Sessions::$_instance` property. ##### Developer Notes + Added `LLMS_Awards_Query`, used for querying data about awarded certificates and achievements. + The method signature `LLMS_Student::get_achievements()` and `LLMS_Student::get_certificates()` now use this class under tho hood. + The previous method signature, which passed data into a direct SQL query, is now deprecated. + Achievement and certificate data storage locations have been modified, primarily to reduce reliance on the `wp_postmeta` table which will result in a site-wide performance improvement, especially on large sites. + Meta properties `_llms_achievement_content` and `_llms_certificate_content` have been removed in favor of `WP_Post::$post_content`. + Meta properties `_llms_achievement_title` and `_llms_certificate_title` have been removed in favor of `WP_Post::$post_title`. + Meta properties `_llms_achievement_template` and `_llms_certificate_template` have been removed in favor of `WP_Post::$post_parent`. + Meta properties `_llms_achievement_image` and `_llms_certificate_image` have been moved the meta property `_thumbnail_id` in order to utilize the WordPress core's featured image functionality and internal APIs. + Reliance on `lifterlms_user_postmeta` for achievement and certificate data will be removed in a future release. + User postmeta properties `_achievement_earned` and `_certificate_earned` will continue to be recorded but are no longer being used internally. + The `updated_date` is now accessible via `WP_Post::$post_date`. + The `user_id` is now accessible via `WP_Post::$post_author`. + Added new Javascript UI components library, modeled after `@wordpress/components`. [Read more](https://github.com/gocodebox/lifterlms/tree/dev-600/packages/components). + Added a new SVG icon library, modeled after `@wordpress/icons`. [Read more](https://github.com/gocodebox/lifterlms/tree/dev-600/packages/icons). + The merge code button seen on certificate and email template editors is now an SVG image instead of a PNG. + Added utility function for escaping and quoting strings. [#1027](https://github.com/gocodebox/lifterlms/issues/1027) + Added the ability to force an admin metabox field value through the new `meta` arg. [#2016](https://github.com/gocodebox/lifterlms/issues/2016) + Added new utility function for stripping prefixes from strings. ##### Performance Improvements + Increased the number of files that are autoloaded instead of manually loaded. ##### Updated Templates + [templates/achievements/loop.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/achievements/loop.php) + [templates/achievements/template.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/achievements/template.php) + [templates/admin/notices/db-update.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/admin/notices/db-update.php) + [templates/admin/notices/db-updating.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/admin/notices/db-updating.php) + [templates/admin/reporting/reporting.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/admin/reporting/reporting.php) + [templates/admin/reporting/tabs/students/courses-course.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/admin/reporting/tabs/students/courses-course.php) + [templates/admin/reporting/tabs/students/information.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/admin/reporting/tabs/students/information.php) + [templates/block-templates/single-certificate.html](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/block-templates/single-certificate.html) + [templates/certificates/actions.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/actions.php) + [templates/certificates/content-legacy.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/content-legacy.php) + [templates/certificates/content.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/content.php) + [templates/certificates/dynamic-styles.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/dynamic-styles.php) + [templates/certificates/footer.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/footer.php) + [templates/certificates/header.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/header.php) + [templates/certificates/loop.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/loop.php) + [templates/certificates/preview.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/preview.php) + [templates/certificates/template.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/certificates/template.php) + [templates/checkout/form-switch-source.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/checkout/form-switch-source.php) + [templates/content-certificate.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/content-certificate.php) + [templates/emails/footer.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/emails/footer.php) + [templates/emails/header.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/emails/header.php) + [templates/myaccount/my-grades-single-table.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/myaccount/my-grades-single-table.php) + [templates/myaccount/view-order-actions.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/myaccount/view-order-actions.php) + [templates/myaccount/view-order-information.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/myaccount/view-order-information.php) + [templates/myaccount/view-order-transactions.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/myaccount/view-order-transactions.php) + [templates/myaccount/view-order.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/myaccount/view-order.php) + [templates/product/pricing-table.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/product/pricing-table.php) + [templates/single-certificate.php](https://github.com/gocodebox/lifterlms/blob/6.0.0/templates/single-certificate.php) = v5.10.0 - 2022-02-22 = ##### Updates and Enhancements + Added an option to specify a custom checkout form title for free access plans. [#1774](https://github.com/gocodebox/lifterlms/issues/1774) + Updated LifterLMS Blocks to [v2.3.2](https://make.lifterlms.com/2022/02/22/lifterlms-blocks-version-2-3-2/). [#1774](https://github.com/gocodebox/lifterlms/issues/1774) ##### Bug Fixes + Fixed ability to sort course students table by completed date. [#1969](https://github.com/gocodebox/lifterlms/issues/1969) + Fixed reporting issue encountered when a course has no lessons. [#2012](https://github.com/gocodebox/lifterlms/issues/2012) + Fixed broken checkout on Twenty Twenty-Two Theme when using the password strength meter. [#1997](https://github.com/gocodebox/lifterlms/issues/1997) + Fixed block template slug generation from path in Windows environments. [#2001](https://github.com/gocodebox/lifterlms/issues/2001) + Fixed an issue encountered when using the search box on the voucher admin posts list screen. [#2005](https://github.com/gocodebox/lifterlms/issues/2005) ##### Updated Templates + [templates/admin/reporting/tabs/courses/overview.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/admin/reporting/tabs/courses/overview.php) + [templates/admin/reporting/tabs/memberships/overview.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/admin/reporting/tabs/memberships/overview.php) + [templates/admin/reporting/tabs/quizzes/overview.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/admin/reporting/tabs/quizzes/overview.php) + [templates/block-templates/archive-course.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/archive-course.html) + [templates/block-templates/archive-llms_membership.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/archive-llms_membership.html) + [templates/block-templates/single-certificate.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/single-certificate.html) + [templates/block-templates/single-no-access.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/single-no-access.html) + [templates/block-templates/taxonomy-course_cat.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-course_cat.html) + [templates/block-templates/taxonomy-course_difficulty.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-course_difficulty.html) + [templates/block-templates/taxonomy-course_tag.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-course_tag.html) + [templates/block-templates/taxonomy-course_track.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-course_track.html) + [templates/block-templates/taxonomy-membership_cat.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-membership_cat.html) + [templates/block-templates/taxonomy-membership_tag.html](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/block-templates/taxonomy-membership_tag.html) + [templates/checkout/form-confirm-payment.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/checkout/form-confirm-payment.php) + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/course/lesson-navigation.php) + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/course/lesson-preview.php) + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/course/parent-course.php) + [templates/loop-main.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/loop-main.php) + [templates/loop.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/loop.php) + [templates/myaccount/view-order.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/myaccount/view-order.php) + [templates/quiz/questions/content-picture_choice.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/quiz/questions/content-picture_choice.php) + [templates/quiz/results.php](https://github.com/gocodebox/lifterlms/blob/5.10.0/templates/quiz/results.php) = v5.9.0 - 2022-02-15 = ##### Updates and Enhancements + Picture choice questions are now organized using flexbox in favor of a float-powered column layout. + Resolved PHP 8.1 deprecation warnings. [#1859](https://github.com/gocodebox/lifterlms/issues/1859) ##### Bug Fixes + Updated `llms_get_endpoint_url()` to better adhere to a site's permalink structure with regards to the presence of a trailing slash in the generated url. [#1983](https://github.com/gocodebox/lifterlms/issues/1983) + Only allow users with `edit_post` capabilities to bypass content restrictions. + Fixed stretched images in quiz description/questions when using the Twenty Twenty-Two theme. [#1976](https://github.com/gocodebox/lifterlms/issues/1976) ##### Deprecations + Method `LLMS_AJAX::check_voucher_duplicate()` is deprecated in favor of `LLMS_AJAX_HANDLER::check_voucher_duplicate()`. ##### Updated Templates + [templates/admin/reporting/tabs/courses/overview.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/admin/reporting/tabs/courses/overview.php) + [templates/admin/reporting/tabs/memberships/overview.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/admin/reporting/tabs/memberships/overview.php) + [templates/admin/reporting/tabs/quizzes/overview.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/admin/reporting/tabs/quizzes/overview.php) + [templates/block-templates/archive-course.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/archive-course.html) + [templates/block-templates/archive-llms_membership.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/archive-llms_membership.html) + [templates/block-templates/single-certificate.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/single-certificate.html) + [templates/block-templates/single-no-access.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/single-no-access.html) + [templates/block-templates/taxonomy-course_cat.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-course_cat.html) + [templates/block-templates/taxonomy-course_difficulty.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-course_difficulty.html) + [templates/block-templates/taxonomy-course_tag.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-course_tag.html) + [templates/block-templates/taxonomy-course_track.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-course_track.html) + [templates/block-templates/taxonomy-membership_cat.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-membership_cat.html) + [templates/block-templates/taxonomy-membership_tag.html](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/block-templates/taxonomy-membership_tag.html) + [templates/checkout/form-confirm-payment.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/checkout/form-confirm-payment.php) + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/course/lesson-navigation.php) + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/course/lesson-preview.php) + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/course/parent-course.php) + [templates/loop-main.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/loop-main.php) + [templates/loop.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/loop.php) + [templates/myaccount/view-order.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/myaccount/view-order.php) + [templates/quiz/questions/content-picture_choice.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/quiz/questions/content-picture_choice.php) + [templates/quiz/results.php](https://github.com/gocodebox/lifterlms/blob/5.9.0/templates/quiz/results.php) = v5.8.0 - 2022-01-26 = ##### New Features + Add theme support for the Twenty Twenty-Two theme. [#1824](https://github.com/gocodebox/lifterlms/issues/1824) + Added WordPress Full Site Editing compatibility for various LifterLMS-powered templates. ##### Updates and Enhancements + The minimum required WordPress core version is now version 5.5. + Tested against WordPress version 5.9. + Updated LifterLMS Blocks: [v2.3.0](https://make.lifterlms.com/2022/01/25/lifterlms-blocks-version-2-3-0/), [v2.3.1](https://make.lifterlms.com/2022/01/26/lifterlms-blocks-version-2-3-1/). + Remove the "description" registered with LifterLMS custom post types. [#710](https://github.com/gocodebox/lifterlms/issues/710) ##### Updated Templates + [templates/block-templates/archive-course.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/archive-course.html) + [templates/block-templates/archive-llms_membership.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/archive-llms_membership.html) + [templates/block-templates/single-certificate.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/single-certificate.html) + [templates/block-templates/single-no-access.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/single-no-access.html) + [templates/block-templates/taxonomy-course_cat.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-course_cat.html) + [templates/block-templates/taxonomy-course_difficulty.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-course_difficulty.html) + [templates/block-templates/taxonomy-course_tag.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-course_tag.html) + [templates/block-templates/taxonomy-course_track.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-course_track.html) + [templates/block-templates/taxonomy-membership_cat.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-membership_cat.html) + [templates/block-templates/taxonomy-membership_tag.html](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/block-templates/taxonomy-membership_tag.html) + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/course/lesson-navigation.php) + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/course/lesson-preview.php) + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/course/parent-course.php) + [templates/loop-main.php](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/loop-main.php) + [templates/loop.php](https://github.com/gocodebox/lifterlms/blob/5.8.0/templates/loop.php) = v5.7.0 - 2022-01-11 = ##### Updates and Enhancements + Informed developers about the deprecated `LLMS_Section::get_next_available_lesson_order()` method. + Informed developers about the deprecated `LLMS_Section::get_order()` method. + Informed developers about the deprecated `LLMS_Section::get_parent_course()` method. + Informed developers about the deprecated `LLMS_Section::set_parent_course()` method. ##### Deprecations + Deprecated `LLMS_Frontend_Assets::enqueue_inline_pw_script()` with no replacement. + Deprecated the `LLMS_Lesson::get_order()` method in favor of the `LLMS_Lesson::get( 'order' )` method. + Deprecated the `LLMS_Lesson::get_parent_course()` method in favor of the `LLMS_Lesson::get( 'parent_course' )` method. + Deprecated the `LLMS_Lesson::set_parent_course()` method in favor of the `LLMS_Lesson::set( 'parent_course', $course_id )` method. + Deprecated the `LLMS_AJAX_Handler::add_lesson_to_course()` method with no replacement. + Deprecated the `LLMS_AJAX_Handler::create_lesson()` method with no replacement. + Deprecated the `LLMS_AJAX_Handler::create_section()` method with no replacement. + Deprecated the `LLMS_Lesson_Handler::assign_to_course()` method with no replacement. + Deprecated the `LLMS_Post_Handler::create_section()` method with no replacement. ##### Updated Templates + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-navigation.php) + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-preview.php) + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/parent-course.php) = v5.6.0 - 2021-12-07 = ##### New Features + Added an option to prevent users (by role) from copying site content and saving local copies of images. + Added new site setting to disallow concurrent user sessions for specified user roles. ##### Updates and Enhancements + Updates LifterLMS REST to [v1.0.0-beta.21](https://make.lifterlms.com/2021/12/07/lifterlms-rest-api-version-1-0-0-beta-21/). ##### Developer Notes + Database migration functions can now be namespaced, eliminating the need to prefix update function names with a version number. = v5.5.0 - 2021-11-05 = ##### New Features + Includes the LLMS-CLI beta, a set of WP-CLI commands for LifterLMS and LifterLMS add-ons, as part of the core plugin: + To get started, run `wp llms --help` in your terminal or read the [online command documentation](https://developer.lifterlms.com/cli/commands/llms/). + Please note that the LLMS-CLI is included as a public beta feature. The command API is in a pre-release state and, as such, is subject to change without warning. + If you encounter any issues or wish to provide feedback on the LLMS-CLI please get in touch at [https://github.com/gocodebox/lifterlms-cli](https://github.com/gocodebox/lifterlms-cli). ##### Bug Fixes + Fix AJAX post search when using search queries containing quotes. ##### Deprecations + The `lifterlms_register_post_type_llms_engagement` is deprecated in favor of `lifterlms_register_post_type_engagement`. + The `lifterlms_register_post_type_llms_achievement` is deprecated in favor of `lifterlms_register_post_type_achievement`. + The `lifterlms_register_post_type_llms_certificate` is deprecated in favor of `lifterlms_register_post_type_certificate`. + The `lifterlms_register_post_type_llms_my_certificate` is deprecated in favor of `lifterlms_register_post_type_my_certificate`. + The `lifterlms_register_post_type_llms_email` is deprecated in favor of `lifterlms_register_post_type_email`. + The `lifterlms_register_post_type_llms_coupon` is deprecated in favor of `lifterlms_register_post_type_coupon`. + The `lifterlms_register_post_type_llms_voucher` is deprecated in favor of `lifterlms_register_post_type_voucher`. ##### Developer Notes + The `llms-addons` style asset no longer ships an unminified version. + The `llms-admin-add-ons` style asset no longer ships an unminified version and the filename of the distributed file has changed. + All the LifterLMS post types are now registered using the static method `LLMS_Post_Types::register_post_type()`. + Upgraded woocommerce/action-scheduler to [v3.4.0](https://github.com/woocommerce/action-scheduler/releases/tag/3.4.0). = v5.4.1 - 2021-10-26 = ##### Bug fixes + Exclude internal-use-only properties (related to reporting caches and student counts) when exporting or cloning courses. [#1532](https://github.com/gocodebox/lifterlms/issues/1532) + Don't sanitize input from user forms until validation has succeeded. [#1829](https://github.com/gocodebox/lifterlms/issues/1829.) + Fixed an issue encountered when fields are removed from reusable blocks, causing some user forms from functioning as expected. [#1832](https://github.com/gocodebox/lifterlms/issues/1832) [Read the full changelog](https://make.lifterlms.com/tag/lifterlms)