Hotfix
- Reinstalls included dependencies on PHP 7.4.
The minimum required LifterLMS core version requirement has been raised from 5.3.0 to 6.0.0. Please upgrade LifterLMS to 6.0.0 or later in order to continue using this add-on!
LLMS_Query_Assignments_Submission::preprare_query()
to LLMS_Query_Assignments_Submission::prepare_query()
.LLMS_Query_Assignments_Submission::$max_pages
property with LLMS_Query_Assignments_Submission::get( 'max_pages' )
.LLMS_PDFS_Pdflayer
.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. 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.
post_name
of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers.llms_use_legacy_engagement_images
. #1081header.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{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<code>
tag instead of an <a>
tag. #2033LLMS_Database_Query
has been deprecated.LLMS_Database_Query::$found_results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_found_results()
.LLMS_Database_Query::$max_pages
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_max_pages()
.LLMS_Database_Query::$number_results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_number_results()
.LLMS_Database_Query::$results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_results()
.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.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
.LLMS_Achievement_User
is deprecated with no direct replacement.LLMS_Achievement::is_enabled()
is deprecated with no replacement.LLMS_Achievement::get_blogname()
is deprecated with no replacement.LLMS_Achievement::format_string()
is deprecated with no replacement.LLMS_Achievement::get_title()
is deprecated with no replacement.LLMS_Achievement::get_content()
is deprecated with no replacement.LLMS_Achievement::get_content_html()
is deprecated with no replacement.LLMS_Achievement::create()
is deprecated with no replacement.LLMS_Achievements::trigger_engagement()
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement()
.LLMS_Certificate
is deprecated with no direct replacement.LLMS_Certificate::is_enabled()
is deprecated with no replacement.LLMS_Certificate::get_blogname()
is deprecated with no replacement.LLMS_Certificate::format_string()
is deprecated with no replacement.LLMS_Certificate::get_title()
is deprecated with no replacement.LLMS_Certificate::get_content()
is deprecated with no replacement.LLMS_Certificate::get_content_html()
is deprecated with no replacement.LLMS_Certificate::get_title()
is deprecated with no replacement.LLMS_Certificates::trigger_engagement()
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate()
.LLMS_Engagements::init()
is deprecated with no replacement.LLMS_Engagements::handle_achievement
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement
.LLMS_Engagements::handle_certificate
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate
.LLMS_Engagements::handle_email
is deprecated in favor of LLMS_Engagement_Handler::handle_email
.LLMS_Database_Query::set_found_results()
is deprecated.LLMS_Achievement_User
is deprecated with no direct replacement.LLMS_Achievement_User::has_user_earned()
is deprecated with no replacement.LLMS_Achievement_User::init()
is deprecated with no replacement.LLMS_Achievement_User::trigger()
is deprecated with no replacement.LLMS_Achievement_User::get_content_html()
is deprecated with no replacement.LLMS_Certificate_User
is deprecated with no direct replacement.LLMS_Certificate_User::init()
is deprecated with no replacement.LLMS_Certificate_User::trigger()
is deprecated with no replacement.LLMS_Certificate_User::get_content_html()
is deprecated with no replacement.LLMS_Certificate_User::set_shortcode_user()
is deprecated with no replacement.llms_log()
directly instead.llms_db_query_get_default_args
is deprecated in favor of llms_{$this->id}_query_get_default_args
.llms_certificate_has_user_earned
is deprecated in favor of llms_earned_certificate_dupcheck
.LLMS_Achievements::$content
is deprecated with no replacement.LLMS_Admin_Post_Types::meta_metabox_init()
is deprecated with no replacement.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.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.llms_has_legacy_certificates
or return false
from the filter llms_has_legacy_certificates
.LLMS_Engagements::handle_certificate
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate
. #290LLMS_Engagements::handle_achievement
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement
. #290LLMS_ENGAGEMENT_DEBUG
is deprecated with no replacement.LLMS_Engagements::log
is deprecated. Use llms_log()
instead.LLMS_Engagements::handle_email
is deprecated in favor of LLMS_Engagement_Handler::handle_email
.lifterlms_register_post_type_llms_my_certificate
is deprecated in favor of lifterlms_register_post_type_my_certificate
.LLMS_Database_Query::preprare_query()
and replaced with LLMS_Database_Query::prepare_query()
.LLMS_Events_Query::preprare_query
replaced with LLMS_Events_Query::prepare_query()
.LLMS_Query_Quiz_Attempt::preprare_query
replaced with LLMS_Query_Quiz_Attempt::prepare_query()
.LLMS_Query_User_Postmeta::preprare_query
replaced with LLMS_Query_User_Postmeta::prepare_query()
.LLMS_Student_Query::preprare_query
replaced with LLMS_Student_Query::prepare_query()
.LLMS_Notifications_Query::preprare_query
replaced with LLMS_Notifications_Query::prepare_query()
.LLMS_Notifications_Query::preprare_query
replaced with LLMS_Notifications_Query::prepare_query()
. #859templates/block-templates/single-certificate.html
.LLMS()
function in favor of the llms()
function.LLMS_SendWP::do_remote_install()
method in favor of the LLMS_Abstract_Email_Provider::do_remote_install()
method.LLMS_Abstract_Email_Provider::output_css()
method.LLMS_Abstract_Generator_Posts::increment()
method.LLMS_Admin_Users_Table::load_dependencies()
method.LLMS_Admin_Import::localize_stat()
method.LLMS_Admin_Notices_Core::check_staging()
method.LLMS_Admin_Setup_Wizard::generator_course_status()
method.LLMS_Admin_Setup_Wizard::output_step_html()
method.LLMS_Admin_Setup_Wizard::scripts()
method.LLMS_Admin_Setup_Wizard::watch_course_generation()
method.llms_format_decimal()
function.llms_set_person_auth_cookie()
function.LLMS_Course::sections
property.LLMS_Course::sku
property.LLMS_Frontend_Assets::enqueue_inline_pw_script()
method.LLMS_Frontend_Assets::enqueue_inline_script()
method.LLMS_Frontend_Assets::is_inline_script_enqueued()
method.LLMS_Generator::add_custom_values()
method.LLMS_Generator::add_custom_values()
method.LLMS_Generator::format_date()
method.LLMS_Generator::get_author_id_from_raw()
method.LLMS_Generator::get_default_post_status()
method.LLMS_Generator::get_generated_posts()
method.LLMS_Generator::increment()
method.llms__created
action hook from the LLMS_Abstract_Database_Store::create()
method.llms__deleted
action hook from the LLMS_Abstract_Database_Store::delete()
method.llms__updated
action hook from the LLMS_Abstract_Database_Store::update()
method.llms_user_removed_from_membership_level
action hook from the LLMS_Student::unenroll()
method.$purchaseable
global variable in the lifterlms_template_pricing_table()
function.$purchaseable
global variable in the templates/product/pricing-table.php
file.LLMS_Frontend_Password
class.LLMS_Install::db_updates()
method.LLMS_Install::update_notice()
method.LLMS_Notifications::dispatch_processors()
method.llms_processors_async_dispatching
filter hook from the LLMS_Notifications::__construct()
method.LLMS_Notifications::$_instance
property.LLMS_Person_Handler::register()
method.LLMS_Person_Handler::sanitize_field()
method.LLMS_Person_Handler::update()
method.LLMS_Person_Handler::validate_fields()
method.LLMS_Person_Handler::voucher_toggle_script()
method.templates/admin/notices/db-update.php
file.templates/admin/notices/db-updating.php
file.llms_usernames_blacklist
filter hook in the llms_get_usernames_blocklist()
function.includes/libraries/wp-background-processing/index.php
file.includes/libraries/wp-background-processing/wp-async-request.php
file.includes/libraries/wp-background-processing/wp-background-process.php
file.LLMS_Section::get_next_available_lesson_order()
method.LLMS_Section::get_order()
method.LLMS_Section::get_parent_course()
method.LLMS_Section::set_parent_course()
method.LLMS_AJAX::check_voucher_duplicate()
method.LLMS_AJAX::get_ajax_data()
method.LLMS_AJAX::register_script()
method.LLMS_Interface_Post_Audio
interface.LLMS_Interface_Post_Sales_Page
interface.LLMS_Interface_Post_Video
interface.LLMS_Achievements::$_instance
property.LLMS_Certificates::$_instance
property.LLMS_Emails::$_instance
property.LLMS_Engagements::$_instance
property.LLMS_Events::$_instance
property.LLMS_Grades::$_instance
property.LLMS_Integrations::$_instance
property.LLMS_Payment_Gateways::$_instance
property.LLMS_Processors::$_instance
property.LLMS_Sessions::$_instance
property.LLMS_Awards_Query
, used for querying data about awarded certificates and achievements.LLMS_Student::get_achievements()
and LLMS_Student::get_certificates()
now use this class under tho hood.wp_postmeta
table which will result in a site-wide performance improvement, especially on large sites._llms_achievement_content
and _llms_certificate_content
have been removed in favor of WP_Post::$post_content
._llms_achievement_title
and _llms_certificate_title
have been removed in favor of WP_Post::$post_title
._llms_achievement_template
and _llms_certificate_template
have been removed in favor of WP_Post::$post_parent
._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.lifterlms_user_postmeta
for achievement and certificate data will be removed in a future release._achievement_earned
and _certificate_earned
will continue to be recorded but are no longer being used internally.updated_date
is now accessible via WP_Post::$post_date
.user_id
is now accessible via WP_Post::$post_author
.@wordpress/components
. Read more.@wordpress/icons
. Read more.meta
arg. #2016post_name
of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers.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. #463llms_use_legacy_engagement_images
. #1081{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. #1640LLMS_Notifications_Query::$found_results
property is accessed in LLMS_Abstract_Notification_Controller::has_subscriber_received()
. + Fixed how the protected LLMS_Notifications_Query::$max_pages
property is accessed in lifterlms_template_student_dashboard_my_notifications()
.LLMS_Database_Query
has been deprecated.LLMS_Database_Query::$found_results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_found_results()
.LLMS_Database_Query::$max_pages
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_max_pages()
.LLMS_Database_Query::$number_results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_number_results()
.LLMS_Database_Query::$results
. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_results()
.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.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
.LLMS_Achievement_User
is deprecated with no direct replacement.LLMS_Achievement::is_enabled()
is deprecated with no replacement.LLMS_Achievement::get_blogname()
is deprecated with no replacement.LLMS_Achievement::format_string()
is deprecated with no replacement.LLMS_Achievement::get_title()
is deprecated with no replacement.LLMS_Achievement::get_content()
is deprecated with no replacement.LLMS_Achievement::get_content_html()
is deprecated with no replacement.LLMS_Achievement::create()
is deprecated with no replacement.LLMS_Achievements::trigger_engagement()
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement()
.LLMS_Certificate
is deprecated with no direct replacement.LLMS_Certificate::is_enabled()
is deprecated with no replacement.LLMS_Certificate::get_blogname()
is deprecated with no replacement.LLMS_Certificate::format_string()
is deprecated with no replacement.LLMS_Certificate::get_title()
is deprecated with no replacement.LLMS_Certificate::get_content()
is deprecated with no replacement.LLMS_Certificate::get_content_html()
is deprecated with no replacement.LLMS_Certificate::get_title()
is deprecated with no replacement.LLMS_Certificates::trigger_engagement()
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate()
.LLMS_Engagements::init()
is deprecated with no replacement.LLMS_Engagements::handle_achievement
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement
.LLMS_Engagements::handle_certificate
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate
.LLMS_Engagements::handle_email
is deprecated in favor of LLMS_Engagement_Handler::handle_email
.LLMS_Database_Query::set_found_results()
is deprecated.LLMS_Achievement_User
is deprecated with no direct replacement.LLMS_Achievement_User::has_user_earned()
is deprecated with no replacement.LLMS_Achievement_User::init()
is deprecated with no replacement.LLMS_Achievement_User::trigger()
is deprecated with no replacement.LLMS_Achievement_User::get_content_html()
is deprecated with no replacement.LLMS_Certificate_User
is deprecated with no direct replacement.LLMS_Certificate_User::init()
is deprecated with no replacement.LLMS_Certificate_User::trigger()
is deprecated with no replacement.LLMS_Certificate_User::get_content_html()
is deprecated with no replacement.LLMS_Certificate_User::set_shortcode_user()
is deprecated with no replacement.llms_log()
directly instead.llms_db_query_get_default_args
is deprecated in favor of llms_{$this->id}_query_get_default_args
.llms_certificate_has_user_earned
is deprecated in favor of llms_earned_certificate_dupcheck
.LLMS_Achievements::$content
is deprecated with no replacement.LLMS_Admin_Post_Types::meta_metabox_init()
is deprecated with no replacement.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.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.llms_has_legacy_certificates
or return false
from the filter llms_has_legacy_certificates
.LLMS_Engagements::handle_certificate
is deprecated in favor of LLMS_Engagement_Handler::handle_certificate
. #290LLMS_Engagements::handle_achievement
is deprecated in favor of LLMS_Engagement_Handler::handle_achievement
. #290LLMS_ENGAGEMENT_DEBUG
is deprecated with no replacement.LLMS_Engagements::log
is deprecated. Use llms_log()
instead.LLMS_Engagements::handle_email
is deprecated in favor of LLMS_Engagement_Handler::handle_email
.lifterlms_register_post_type_llms_my_certificate
is deprecated in favor of lifterlms_register_post_type_my_certificate
.LLMS_Database_Query::preprare_query()
and replaced with LLMS_Database_Query::prepare_query()
.LLMS_Events_Query::preprare_query
replaced with LLMS_Events_Query::prepare_query()
.LLMS_Query_Quiz_Attempt::preprare_query
replaced with LLMS_Query_Quiz_Attempt::prepare_query()
.LLMS_Query_User_Postmeta::preprare_query
replaced with LLMS_Query_User_Postmeta::prepare_query()
.LLMS_Student_Query::preprare_query
replaced with LLMS_Student_Query::prepare_query()
.LLMS_Notifications_Query::preprare_query
replaced with LLMS_Notifications_Query::prepare_query()
.LLMS_Notifications_Query::preprare_query
replaced with LLMS_Notifications_Query::prepare_query()
. #859templates/block-templates/single-certificate.html
.LLMS()
function in favor of the llms()
function.LLMS_SendWP::do_remote_install()
method in favor of the LLMS_Abstract_Email_Provider::do_remote_install()
method.LLMS_Abstract_Email_Provider::output_css()
method.LLMS_Abstract_Generator_Posts::increment()
method.LLMS_Admin_Users_Table::load_dependencies()
method.LLMS_Admin_Import::localize_stat()
method.LLMS_Admin_Notices_Core::check_staging()
method.LLMS_Admin_Setup_Wizard::generator_course_status()
method.LLMS_Admin_Setup_Wizard::output_step_html()
method.LLMS_Admin_Setup_Wizard::scripts()
method.LLMS_Admin_Setup_Wizard::watch_course_generation()
method.llms_format_decimal()
function.llms_set_person_auth_cookie()
function.LLMS_Course::sections
property.LLMS_Course::sku
property.LLMS_Frontend_Assets::enqueue_inline_pw_script()
method.LLMS_Frontend_Assets::enqueue_inline_script()
method.LLMS_Frontend_Assets::is_inline_script_enqueued()
method.LLMS_Generator::add_custom_values()
method.LLMS_Generator::add_custom_values()
method.LLMS_Generator::format_date()
method.LLMS_Generator::get_author_id_from_raw()
method.LLMS_Generator::get_default_post_status()
method.LLMS_Generator::get_generated_posts()
method.LLMS_Generator::increment()
method.llms__created
action hook from the LLMS_Abstract_Database_Store::create()
method.llms__deleted
action hook from the LLMS_Abstract_Database_Store::delete()
method.llms__updated
action hook from the LLMS_Abstract_Database_Store::update()
method.llms_user_removed_from_membership_level
action hook from the LLMS_Student::unenroll()
method.$purchaseable
global variable in the lifterlms_template_pricing_table()
function.$purchaseable
global variable in the templates/product/pricing-table.php
file.LLMS_Frontend_Password
class.LLMS_Install::db_updates()
method.LLMS_Install::update_notice()
method.LLMS_Notifications::dispatch_processors()
method.llms_processors_async_dispatching
filter hook from the LLMS_Notifications::__construct()
method.LLMS_Notifications::$_instance
property.LLMS_Person_Handler::register()
method.LLMS_Person_Handler::sanitize_field()
method.LLMS_Person_Handler::update()
method.LLMS_Person_Handler::validate_fields()
method.LLMS_Person_Handler::voucher_toggle_script()
method.templates/admin/notices/db-update.php
file.templates/admin/notices/db-updating.php
file.llms_usernames_blacklist
filter hook in the llms_get_usernames_blocklist()
function.includes/libraries/wp-background-processing/index.php
file.includes/libraries/wp-background-processing/wp-async-request.php
file.includes/libraries/wp-background-processing/wp-background-process.php
file.LLMS_Section::get_next_available_lesson_order()
method.LLMS_Section::get_order()
method.LLMS_Section::get_parent_course()
method.LLMS_Section::set_parent_course()
method.LLMS_AJAX::check_voucher_duplicate()
method.LLMS_AJAX::get_ajax_data()
method.LLMS_AJAX::register_script()
method.LLMS_Interface_Post_Audio
interface.LLMS_Interface_Post_Sales_Page
interface.LLMS_Interface_Post_Video
interface.LLMS_Achievements::$_instance
property.LLMS_Certificates::$_instance
property.LLMS_Emails::$_instance
property.LLMS_Engagements::$_instance
property.LLMS_Events::$_instance
property.LLMS_Grades::$_instance
property.LLMS_Integrations::$_instance
property.LLMS_Payment_Gateways::$_instance
property.LLMS_Processors::$_instance
property.LLMS_Sessions::$_instance
property.LLMS_Awards_Query
, used for querying data about awarded certificates and achievements.LLMS_Student::get_achievements()
and LLMS_Student::get_certificates()
now use this class under tho hood.wp_postmeta
table which will result in a site-wide performance improvement, especially on large sites._llms_achievement_content
and _llms_certificate_content
have been removed in favor of WP_Post::$post_content
._llms_achievement_title
and _llms_certificate_title
have been removed in favor of WP_Post::$post_title
._llms_achievement_template
and _llms_certificate_template
have been removed in favor of WP_Post::$post_parent
._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.lifterlms_user_postmeta
for achievement and certificate data will be removed in a future release._achievement_earned
and _certificate_earned
will continue to be recorded but are no longer being used internally.updated_date
is now accessible via WP_Post::$post_date
.user_id
is now accessible via WP_Post::$post_author
.@wordpress/components
. Read more.@wordpress/icons
. Read more.meta
arg. #2016