Hi everyone!
I have a problem with the course outline in my sidebar.
I am using the shortcode [lifterlms_course_outline] in my course/lesson sidebar, because I want the outline to be collapsed and only show the lessons of the current section. This works perfectly, as long as the user is within the lesson.
But if the lesson contains a quiz/test, the outline doesn’t show the correct lessons “uncollapsed”, instead the first section is being shown, in which there are unmarked lessons. No matter in which course section the current test is.
This is not good for my application, because students should be allowed to go through the course in a different sequence.
I assume, this is the way it is, because the url structure of the regular lessons is “websitename.com/lesson/lesson-name” but the url structure of a test is “websitename.com/test/test-name” and not “websitename.com/lesson/test-name/… ” (or however you named the structure on your lifterlms pages). Am I right, that this is the reason?
It would be an (not very nice, but acceptable) solution to me, that all sections are collapsed during the test. I could then set this up for the tests. But the shortcode has no option, that all sections are collapsed. Way better would be a solution, where the right section of the current test is being shown in the outline.
I would be very glad, if someone can help me.
Thank you!
Dev
]]>Hi!
Maybe anyone met that problem earlier. Scanning web site with Google Speed Insights got result:
Uses Deprecated APIs 1 warning found Deprecated APIs will be removed from the browser in the future.
More information about deprecated APIs
Deprecation/Warning
Source 7steps.pl
Custom
UnloadHandler ../../js/llms.js:2223:0
Thanks in advance for any help!
]]>Hi.
After updating to version 6.7 Debugging in WordPress gives errors:
Notice: The _load_textdomain_just_in_time function was not called correctly. Translation loading for domain lifterlms was run too early.
]]>Hi there. I noticed today that only some of the courses students are enrolled into, but not all of them, appear on the dashboard under “My courses”.
It seems like the newer enrollments appear fine, but some older ones do not appear. When checking the list of enrolled students in the course page, I can see that the student is enrolled.
Can’t figure out what is causing this issue. Would appreciate your help.
]]>Hello.
I noticed that the translatable strings available on?translate.www.ads-software.com?for Stable are from an old version (7.8.2) and not from the latest version released (7.8.3).
Have you seen these pages yet?
https://make.www.ads-software.com/polyglots/2024/04/09/missing-strings-to-translate-opt-out/
It says here that the developer can do this check:
“To get more details about a failed import please join the WordPress Slack workspace and switch to the #meta-language-packs channel. All imports are getting logged here. Search by the slug of your plugin to get the relevant results.”
Thanks.
]]>Hello,
We are testing LifterLMS on a mostly Beaver Builder site with Gravity Forms. We are not using the blocks editor and it seems most of the LifterLMS options use the block editor. I tested the LifterLMS Labs plugin feature for Beaver Builder and none of the LifterLMS Modules work.
What we need:
Thanks for any help!
]]>When GravityKit’s Gravity View plugin is activated, LifterLMS cannot be activated. I reached out to GravityKit and they provided the following response.
The LifterLMS/GravityView issue can be reproduced with the following steps on the plugin page:
[05-Sep-2024 00:54:55 UTC] PHP Fatal error: Uncaught Error: Class “LLMS_Integration_GravityView” not found in ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/class.llms.integrations.php:81 Stack trace: #0 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/class.llms.integrations.php(41): LLMS_Integrations->init()
#1 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/traits/llms-trait-singleton.php(38): LLMS_Integrations->__construct()
#2 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/class-lifterlms.php(525): LLMS_Integrations::instance()
#3 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/admin/settings/class.llms.settings.integrations.php(129): LifterLMS->integrations()
#4 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/admin/settings/class.llms.settings.integrations.php(61): LLMS_Settings_Integrations->get_table_html()
#5 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/admin/settings/class.llms.settings.integrations.php(113): LLMS_Settings_Integrations->get_default_settings()
#6 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/class.llms.install.php(225): LLMS_Settings_Integrations->get_settings(true)
#7 ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/class.llms.install.php(571): LLMS_Install::create_options()
#8 ../public_html/website_fd6f1ff7/wp-includes/class-wp-hook.php(324): LLMS_Install::install(false)
#9 ../public_html/website_fd6f1ff7/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(”, Array)
#10 ../public_html/website_fd6f1ff7/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#11 ../public_html/website_fd6f1ff7/wp-admin/includes/plugin.php(703): do_action(‘activate_lifter…’, false)
#12 ../public_html/website_fd6f1ff7/wp-admin/plugins.php(60): activate_plugin(‘lifterlms/lifte…’, ‘example.com’, false)
#13 {main} thrown in ../public_html/website_fd6f1ff7/wp-content/plugins/lifterlms/includes/class.llms.integrations.php on line 81
My site crashed after the update.
I managed to get my website back online by disabling the plugin.
However I can no longer activate it, I get the following message when I try to activate it “The extension could not be activated, because it triggered a fatal error.”
Voucher Code: Judge2025
All of our courses are displaying in mobile view even through the rest of our site pages are displaying fine. This is a critical issue that needs immediate help.
]]>I am trying to create a new course using an API Post request in make.com. I get a 401 error saying that this user is not permitted to create courses.
Strangely, I can GET course info using the API (same credentials / header info as when using the POST request)
The API-key I use has “read_write” permissions.
What could be the issue here?
This is the input in the make.com module “make an API key auth request” module
[
{
"ca": null,
"qs": [],
"url": "https://kurse.adlx.de/wp-json/llms/v1/courses",
"data": "{\"title\":\"My course title\",\"content\":\"My course content\"}",
"gzip": true,
"method": "post",
"headers": [
{
"name": "consumerKey",
"value": "ck_xxxxxxxxxmyConsumerKey"
},
{
"name": "consumerSecret",
"value": "cs_xxxxxxxxxmySecretKEy"
}
],
"timeout": null,
"useMtls": false,
"bodyType": "raw",
"contentType": "application/json",
"serializeUrl": false,
"shareCookies": false,
"parseResponse": true,
"followRedirect": true,
"useQuerystring": false,
"followAllRedirects": false,
"rejectUnauthorized": true
}
]
This is the output
[
{
"statusCode": 401,
"headers": [
{
"name": "server",
"value": "nginx"
},
{
"name": "date",
"value": "Fri, 18 Oct 2024 19:22:07 GMT"
},
{
"name": "content-type",
"value": "application/json; charset=UTF-8"
},
{
"name": "transfer-encoding",
"value": "chunked"
},
{
"name": "connection",
"value": "keep-alive"
},
{
"name": "x-powered-by",
"value": "PHP/7.4.33"
},
{
"name": "x-robots-tag",
"value": "noindex"
},
{
"name": "link",
"value": "<https://kurse.adlx.de/wp-json/>; rel=\"https://api.w.org/\""
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "access-control-expose-headers",
"value": "X-WP-Total, X-WP-TotalPages, Link"
},
{
"name": "access-control-allow-headers",
"value": "Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type"
},
{
"name": "allow",
"value": "GET"
},
{
"name": "set-cookie",
"value": "wp_llms_session_xxxxCookieKeyxxxx; expires=Sat, 19-Oct-2024 01:22:07 GMT; Max-Age=21600; path=/; secure; HttpOnly"
}
],
"cookieHeaders": [
"wp_llms_session_xxxxCookieKeyxxx; expires=Sat, 19-Oct-2024 01:22:07 GMT; Max-Age=21600; path=/; secure; HttpOnly"
],
"data": {
"code": "llms_rest_unauthorized_request",
"message": "Du bist mit diesem Benutzer leider nicht berechtigt, Kurse zu erstellen.",
"data": {
"status": 401
}
},
"fileSize": 148
}
]
]]>
]]>We’ve been having some problems with students not receiving notifications for lesson comments. I can see in the backend under “Notifications” their emails are assigned to receive lesson comments and that it’s enabled, but unfortunately none of them are. They’ve checked spam folders etc. but nothing. I don’t know if you can give me any insight as to why they might not be receiving them? We’ve not had this problem before, it’s the first time.
I did go into the Lesson comment replies option, but I can’t add email fields due to a WP limitation.
Any help would be much appreciated.
Best,
Verity
Hi, can you import SCORM files with the free version?
]]>When I hook into the profile_update action and edit a field in wp-admin, the function runs twice. On the first trigger $userdata doesn’t have the updated information. When I deactivate lifterlms it goes back to only triggering once. When I activate lifterlms it only triggers once on the first field edit and $userdata is proper. Then on the second field edit it goes back to triggering twice.
This is annoying because I’m trying to use that data to synchronize with an external system and on the second trigger the API call doesn’t seem to be going through. Ok maybe I can skip the API call on the first trigger to make sure it runs on the second trigger, but if that second trigger ever stops happening then our systems are going to get out of sync. Is this second trigger intended behavior?
function custom_function( $user_id, $old_user_data, $userdata ) {
$email = $userdata['user_email'];
$first_name = $userdata['first_name'];
$last_name = $userdata['last_name'];
error_log( print_r( $email, true ) );
error_log( print_r( $first_name, true ) );
error_log( print_r( $last_name, true ) );
}
add_action( 'profile_update', 'custom_function', 10, 3 );
]]>
I created a certificate and set an engagement up so that it is awarded when the course I created is completed. I see on the frontend that it goes from the default text of “You do not have any certificates yet.” to a blank page. When I right click and click inspect to see the computed HTML. It’s just an empty list item in the certificate loop. The following is the elements shown:
<ul class="llms-certificates-loop listing-certificates loop-cols-3">
<li class="llms-certificate-loop-item certificate-item">
</li>
</ul>
On the backend, I see that the certificate was awarded to the student. Not sure why this is happening since none of the certificate code was edited.
]]>Hi!
I have a problem with LifterLMS translation to Polish.
It seems that phrases with variables like %S translated only that variable the rest of words are in English.
Ex.: A mocny password is required with at least 8 characters. To make it stronger, use both upper and lower case letters, numbers, and symbols.
I changed lifterlms-pl_PL.po and generated new lifterlms-pl_PL.mo. Checked lifterlms-pl_PL.l10n.php. At all that files info is correct but at website I see English version.
What could I do to solve my problem?
Thanks in advance
Hi there,
all my courses end with a quiz. Unfortunately there is no way to set something that put on screen anything like a congratulation message for having succesfully attended the course, so I tried to use the ‘lifterlms_course_completed’ hook and do a redirection, without luck.
I tried to use wp_redirect or window.open methods, but in every case everything remains stuck at the finished quiz.
Is there a way to do something like it?
Thank you!
]]>In LifterLMS tutorial videos it is recommended to modify course layout via Appearance/Customize but there is no LifterLMS there. How can I change layout? (e.g. switch sidebar on/off)
]]>I have had no time the recent days for LifterLMS but now, looking at this again I wonder if I am somehow too stupid? There is just no decent Sidebar and I struggle to configure it. I don’t manage to configure it properly for my own course page and the LifterLMS example page shows the sidebar at the bottom of the page, not on the side. This is with the “Total” Theme, as explained before. To make it short: ?I am still stuck. Sidebar not working.
The following php snippets are active
— (1.) LMSSidebar_ThemeSupport —
function my_llms_theme_support(){
add_theme_support( ‘lifterlms-sidebars’ );
}
add_action( ‘after_setup_theme’, ‘my_llms_theme_support’ );
— (2.) LMSSidebarConnect —
function my_llms_sidebar_function( $id ) {
// $sidebar = 'primary-widget-area'; // left side
$sidebar = 'secondary-widget-area'; // right side
return $sidebar;
}
add_filter( ‘llms_get_theme_default_sidebar’, ‘my_llms_sidebar_function’ );
— (3.) LMSSidebar_layout —
add_action( ‘wpex_post_layout_class’, function() {
if ( is_singular( ‘course’) ) {
$layout = ‘right-sidebar’;
}
return $layout;
}, 40 );
——
I have added some text for testing into the sidebar widgets. For instance “this is the main test” in the Main Sidebar Widget and as one can see in the LifterLMS Example Course, this actually shows up. So somehow there is a sidebar but not as it should? Or is it all fine and I am just too confused to understand how LiferLMS works?
Any ideas?
]]>I still have a problem with the sidebar not working. I wonder if I need to choose a different course-platform or change the Theme (-> create the entire website again).
I need to have a first version working until Thursday.
Adrian, the Theme developer (Total Theme) has given me this ?snippet and it is active:
Course ID is “course” and the CSS code from the instructions (https://lifterlms.com/docs/lifterlms-sidebar-support/) has been integrated.
// Alter the layout for the courses post type
// Choices: left-sidebar, right-sidebar, full-width or full-screen
add_action( ‘wpex_post_layout_class’, function() {
if ( is_singular( ‘course’) ) {
$layout = ‘right-sidebar’;
}
return $layout;
}, 40 );
The orignal LifterLMS example does not work correctly https://deepdialog.de/kurs/lifterlms-quickstart-course/
and the same problem is with my own course page https://deepdialog.de/kurs/knotenknacker-paket/
What can I do?
Thanks for your support,
Ulf
]]>I am wondering if there’s an rest api endpoint for fetch the syllabus data without using the sections/{id}/content api route.
I have noticed when we fetch a course details from the /course/${id} endpoint it contains the syllabus data inside the content object. Also its getting dynamically updated when new section or lesson been added to the course.
But I haven’t found an api route for do the same thing for fetching the course syllabus which contains the section title and lesson title. I would like to know if that’s kind of API route is already in the Lifter LMS.
The reason I am interested in the fetching syllabus data because I would like to build a customs lesson navigator for user to navigate between different sections and lessons within the course in my headless UI application without fetching all the content within the section lessons.
]]>If you click on the “Lost Password?” link on the login screen it simply refreshes, because the student dashboard endpoints will override the wp-login.php code and return a bad URL. Leaving the endpoint blank results in the url “…com/wp-login.php//?”
]]>Hi, my site uses:
PHP: 8.1.29
WordPress: 6.6.1
LifterLMS: 7.7.5
When I login as and admin to my WP Admin Area, I can see PHP warnings. It is my staging site, so debug is on.
file_get_contents(.../wp-content/uploads/lifterlms/.htaccess): Failed to open stream: No such file or directory
wp-admin/includes/class-wp-filesystem-direct.php:39
file_get_contents()
wp-admin/includes/class-wp-filesystem-direct.php:39
WP_Filesystem_Direct->get_contents()
wp-content/plugins/lifterlms/includes/class-llms-media-protector.php:652
LLMS_Media_Protector->save_mod_rewrite_rules()
wp-includes/class-wp-hook.php:324
do_action('admin_init')
wp-admin/admin.php:175
I think it is connected to updates introduced in the v7.7.0 of LifterLMS. I thought it was only a one time warning, directly after the update. It looks, it shows in some random times, during login.
]]>Hi, my site uses:
PHP: 8.1.29
WordPress: 6.6.1
LifterLMS: 7.7.5
When creating quiz questions, there is a possibility to apply some styles to text like shown on the screenshot:
The problem is, that it is not parsed correctly and those tags are visible in the quiz summary and historical attempts, after a student finishes the quiz. When none of those style options (U B I) is selected, displayed question is fine.
Additionally, there are some PHP Deprecated messages. Those are visible because it is my staging site, so debug is on.
PHP Deprecated: round(): Passing null to parameter #1 ($num) of type int|float is deprecated in .../wp-content/plugins/lifterlms/templates/quiz/results.php on line 75
PHP Deprecated: strtotime(): Passing null to parameter #1 ($datetime) of type string is deprecated in .../wp-content/plugins/lifterlms/includes/models/model.llms.quiz.attempt.php on line 344
]]>
It is a separate topic for reporting/tracking the issue, which I have reported in this thread: https://www.ads-software.com/support/topic/preg_replace-passing-null-to-parameter-3-subject/
I have noticed, that videos are missing from tiles in My Account area. Videos are normally visible for example in catalog and on the course page, but are definitely missing in the My Account.
It started in LifterLMS 7.7.0 and is still a problem in LifterLMS 7.7.4
After reverting to the version 7.6.3, everything is in place.
My site uses:
PHP: 8.1.29
WordPress: 6.6.1
]]>I’m using Grassblade / xAPI Content to import the courses directly into LifterLMS. When a user finishes a course the course status does not update to say Complete, it stays as Enrolled.
I did all the tests to make sure the LRS connection is good and tested it out with different users and different pieces of content.
In the Grassblade activity stream, I can see that the verb “passed” is recorded, but somehow the course still has 0% progess and is still in the Enrolled phase.
]]>Hola a todos.
?Me podríais ayudar con esta cuestión?
?Es necesario en LIfter LMS optimizar los videos en los tres formatos clásicos. Computadora, Tablet y movil? Porque en la configuración de los videos no encuentro por ningun lado la optimización de los videos.
Muchas gracias
]]>Hi,
I had to deactivate LifterLMS plugin yesterday as when its activated no media (images, videos, etc) will load on my site, either on live site or in wp admin.
When i first noticed the media issue i deactivated each plugin and that was how i confirmed LifterLMS was suddenly causing this new issue.
I am currently testing the free LifterLMS version.
I also reproduced the issue with it on a second site.
My site is very minimal and new. I don’t believe its caused by a theme as when i changed themes on one site, the plugin still caused the same issue. But for information – i use the Assembler.
I tried a fresh reinstall on one site, and tried clearing cache on both sites, and looking online for solutions but couldn’t find one.
Failing all of that – i had to leave LifterLMS deactivated for now or my site won’t work. I can’t explore the LifterLMS settings because as soon as it is activated – my site will break.
I did see two more posts here from yesterday where other users also experienced the issue, in one user’s case it was making the site unresponsive and crashing it… so WP support also recognised LifterLMS as the source of the issue and disabled it. There must be a new issue with the LifterLMS plugin.
There hasn’t been any responses on those posts for a while so i wanted to also report the bug to confirm if anyone is working on a fix?
Thanks in advance.
]]>Hey there. I have the free version of the LifterLMS plugin. Yesterday, my website stopped working, and I received confirmation from WordPress support that the latest update of the LifterLMS plugin caused this issue, so they disabled it. Now I’m seeking help here. I received the following information from WordPress support:
Message: [Repeated 13029 more times] PHP Warning: Attempt to read property “post_mime_type” on null in /srv/htdocs/wp-content/plugins/lifterlms/includes/class-llms-media-protector.php on line 420
Timestamp: 2024-08-06T21:04:21.000Z
Kind: plugins
Name: lifterlms
File: /srv/htdocs/wp-content/plugins/lifterlms/includes/class-llms-media-protector.php
Line: 420
]]>Hi, after updating to newest (7.7.0) version I can see PHP warnings.
It is my staging site, so debug is on.
preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
wp-includes/kses.php:1805
preg_replace()
wp-includes/kses.php:1805
wp_kses_no_null()
wp-includes/kses.php:752
wp_kses()
wp-includes/kses.php:2232
wp_kses_post()
wp-content/plugins/lifterlms/includes/shortcodes/class.llms.shortcodes.php:381
LLMS_Shortcodes::memberships()
wp-content/plugins/lifterlms/includes/shortcodes/class.llms.shortcodes.php:381
LLMS_Shortcodes_Blocks->render_block()
wp-includes/class-wp-block.php:519
WP_Block->render()
wp-includes/blocks.php:2061
render_block()
wp-includes/blocks.php:2113
do_blocks()
wp-includes/class-wp-hook.php:324
apply_filters('the_content')
wp-includes/post-template.php:256
the_content()
wp-content/themes/hueman/tmpl/page-tmpl.php:8
load_template('wp-content/themes/hueman/tmpl/page-tmpl.php')
wp-includes/template.php:745
locate_template()
wp-includes/general-template.php:206
get_template_part('tmpl/page-tmpl')
wp-content/themes/hueman/functions/init-front.php:1741
hu_get_template_part()
wp-content/themes/hueman/functions/init-front.php:27
hu_get_content()
wp-content/themes/hueman/page.php:3
Looks, that it is connected to Memberships short-code and Memberships block.
It was not an issue on the previous version.
My site uses:
PHP: 8.1.29
WordPress: 6.6.1
]]>We phased out a membership and transferred users who were in that membership to a different one. It was a large amount of users so it was necessary to do the transfer through a script.
Some users were already in the destination membership, so in my script I simply unenrolled those users from the phased out membership and took no further action. However, there was course overlap between these two memberships and it turns out that the unenroll action unenrolled those users from overlapping courses even though they should have maintained access through their other membership.
To me this was unexpected logic. I’ve already developed the script to toggle the membership off and on to get their access back. Just reporting for awareness. Here’s the core of the script:
$old_membership_id = 123;
$new_membership_id = 456;
// get students that are enrolled in the old membership
$old_membership = new LLMS_Membership($old_membership_id);
$students = $old_membership->get_students('enrolled', 9999);
foreach ($students as $student_id) {
// Unenroll from the old membership
llms_unenroll_student($student_id, $old_membership_id);
if (!llms_is_user_enrolled($student_id, $new_membership_id)) {
// Enroll in the new membership
llms_enroll_student($student_id, $new_membership_id, 'old-membership-migration');
}
}
]]>