Get a free advice now!

    Pick the topic

    Developer OutsourcingWeb developingApp developingDigital MarketingeCommerce systemseEntertainment systems

    Thank you for your message. It has been sent.

    Tags

    Tips on how to debug LearnDash

    Tips on how to debug LearnDash

    Challenge: see the logs of all events triggered by the LearnDash e-learning WordPress plugin

    Solution: enable LEARNDASH_QUIZ_DEBUG in wp-config.php

    LMS (Learning Management System) WordPress plugins have gained popularity in the last few years. The most popular one is LearnDash, a premium plugin for creating e-learning courses. The administrator can create lessons, topics, quizzes, assignments and certificates.

    The plugin has so many configuration options that first-time users can be overwhelmed with the initial setup. If we take into consideration the installed add-ons that extend the capability of LearnDash, it’s useful to know which events are triggered.

    LearnDash problems

    Website owners that have e-learning courses running sometimes experience issues with configuration or have difficulties with fixing bugs. Common problems reported by plugin users are:

    – users are not enrolled to new courses

    – completing a quiz does not save lesson progress

    – the leaderboard contains incorrect date format

    – scheduled courses do not start

    – installed add-on displays an error

    LearnDash Debug Mode

    The recommended first step is to enable the LearnDash debug mode. You will see all the events in the system with additional parameters. Logs of events are saved in the file and updated in real time.

    To enable reporting and saving logs to a file, we need to add one line to wp-config.php :

    /* wp-config.php */
    
    define('LEARNDASH_QUIZ_DEBUG', true);

    The log file will be saved in: /wp-content/uploads/learndash/debug/

    Log file names will look like this: ld_debug_quiz_DATE_USERID_QUIZID.log

    where:

    DATE – date of log creation

    USERID – user_id that is logged to the session and is taking the course

    QUIZID – quiz_id of the quiz that the user is trying to solve

    example: ld_debug_quiz_20220714_438215_392032.log

    LearnDash Development

    The LearnDash plugin is a really powerful Learning Management System. The WordPress site with a properly configured plugin becomes an e-learning platform. Owners of LMS websites sometimes struggle with proper configuration or need help with customization.

    We have supported several projects with LearnDash integration. Some of the problems we helped solved where:

    • user X can’t complete the course. We need to check what the issue is
    • user Y can’t generate a certificate after completing a course
    • we have over 10000 questions in quizzes, and over 2000 of them have missing answers. We need to check old backups and retrieve the missing answers.
    • A WordPress user has been deleted, which caused some LearnDash content to be erased. We need to reimport the missing content
    • SCORM quiz does not work with LearnDash, we need custom integration
    • the date saved in quiz progress is incorrect, we need a fix
    • the LearnDash plugin slows down the entire website, we need to improve speed performance
    • we have an old LearnDash version and need to migrate data to the newest version
    • we have a multisite LearnDash installation, and we decided to migrate it to a single WordPress site
    • a third-party plugin for LearnDash does not work correctly, we need to figure out how to set it up correctly / fix the plugin source code
    • our theme is not compatible with the current version of LearnDash, we need to introduce new template layouts and styling
    • usermeta _sfwd-quizzes is malformed, we need to find the cause and fix the data
    • we need to prepare a custom report with a list of all questions and answers (multisite installation)
    • when submitting quiz answers, nonce validation is failing, causing results to be not saved in the database

    In most issues, having the ability to read LearnDash logs is really helpful. When fixing a bug, seeing the list of all quiz events can save a lot of time.

    Debugging LearnDash

    The ability to debug Quizzes in LearnDash has been introduced in version 3.2.3. It shows a lot of useful information, including events that are triggered when the user is trying to solve the quiz.

    The Quiz is the most complicated part of the LMS system. The logic for saving scores, grading answers and applying quiz settings logic is really advanced. Seeing logs can be a life saver and can help a lot during custom LearnDash development or during bug fixing.

    Here is an example log with triggers’ details:

    2022-07-14 14:06:42 - 0 - Browser version: WordPress/5.9.3; http://www.example.com
    2022-07-14 14:06:42 - 0 - ---------------------------------
    2022-07-14 14:06:42 - 0 - in completedQuiz
    2022-07-14 14:06:42 - 0 - _POST<pre>Array
    (
        [action] => wp_pro_quiz_completed_quiz
        [course_id] => 392013
        [lesson_id] => 392024
        [topic_id] => 392030
        [quiz] => 392032
        [quizId] => 435
        [results] => Array
            (
                [3082] => Array
                    (
                        [time] => 7
                        [points] => 0
                        [p_nonce] => ae9b00618f
                        [correct] => 0
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => 356652bd55
                        [possiblePoints] => 1
                    )
                [3083] => Array
                    (
                        [time] => 2
                        [points] => 1
                        [p_nonce] => 14d3614922
                        [correct] => 1
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => e67535fdb2
                        [possiblePoints] => 1
                    )
                [3084] => Array
                    (
                        [time] => 2
                        [points] => 0
                        [p_nonce] => db070f0878
                        [correct] => 0
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => 9aefb645c2
                        [possiblePoints] => 1
                    )
                [3085] => Array
                    (
                        [time] => 2
                        [points] => 1
                        [p_nonce] => f7787a3126
                        [correct] => 1
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => 9066ac7d49
                        [possiblePoints] => 1
                    )
                [3086] => Array
                    (
                        [time] => 10
                        [points] => 1
                        [p_nonce] => 57ae3a90ce
                        [correct] => 1
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => c44f624ac6
                        [possiblePoints] => 1
                    )
                [3087] => Array
                    (
                        [time] => 2
                        [points] => 0
                        [p_nonce] => 97bbc8ac03
                        [correct] => 0
                        [data] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 0
                            )
                        [a_nonce] => 14279751cd
                        [possiblePoints] => 1
                    )
                [comp] => Array
                    (
                        [points] => 3
                        [correctQuestions] => 3
                        [quizTime] => 37
                        [quizEndTimestamp] => 1657800422119
                        [quizStartTimestamp] => 1657800402118
                        [result] => 50
                        [cats] => Array
                            (
                                [0] => 50
                            )
                    )
            )
        [timespent] => 36.791
        [quiz_nonce] => b5ba1d4544
    )
    </pre>
    2022-07-14 14:06:42 - 0 - user_id 0
    2022-07-14 14:06:42 - 0 - quiz id 435
    2022-07-14 14:06:42 - 0 - quiz_post_id 392032
    2022-07-14 14:06:42 - 0 - Verifying submitted results
    2022-07-14 14:06:42 - 0 - [3082] result<pre>Array
    (
        [time] => 7
        [points] => 0
        [p_nonce] => ae9b00618f
        [correct] => 0
        [data] => Array
            (
                [0] => 0
                [1] => 1
                [2] => 0
            )
        [a_nonce] => 356652bd55
        [possiblePoints] => 1
    )
    </pre>
    2022-07-14 14:06:42 - 0 - invalid points nonce (p_nonce). Clearing points values.
    2022-07-14 14:06:42 - 0 - response_str [a:3:{i:0;s:1:"0";i:1;s:1:"1";i:2;s:1:"0";}]
    2022-07-14 14:06:42 - 0 - invalid answer nonce (a_nonce). Clearing answer/response values.
    2022-07-14 14:06:42 - 0 - [3083] result<pre>Array
    (
        [time] => 2
        [points] => 1
        [p_nonce] => 14d3614922
        [correct] => 1
        [data] => Array
            (
                [0] => 0
                [1] => 1
                [2] => 0
            )
        [a_nonce] => e67535fdb2
        [possiblePoints] => 1
    )
    </pre>
    

    That’s it for today’s guidelines. Be sure to subscribe to our newsletter to stay up to date on other useful tips and tutorials.

    Comments
    0 response

    Add comment

    Your email address will not be published. Required fields are marked *

    Popular news

    A simple JavaScript typewriter effect tutorial
    • Dev Tips and Tricks

    A simple JavaScript typewriter effect tutorial

    November 22, 2023 by createIT
    WP-HistographAI: reviving history with AI on WordPress
    • Dev Tips and Tricks

    WP-HistographAI: reviving history with AI on WordPress

    November 21, 2023 by createIT
    Update Excel files on OneDrive with Node.js, MS Graph
    • Dev Tips and Tricks

    Update Excel files on OneDrive with Node.js, MS Graph

    November 20, 2023 by createIT
    Popup Visits Plugin: engage your visitors on their X visit!
    • Dev Tips and Tricks
    • Technology

    Popup Visits Plugin: engage your visitors on their X visit!

    November 17, 2023 by createIT
    The most popular eCommerce technologies among top players
    • Technology
    • Trends

    The most popular eCommerce technologies among top players

    October 26, 2023 by createIT
    BaseLinker: the tool, challenges and BaseLinker alternatives
    • Technology
    • Trends

    BaseLinker: the tool, challenges and BaseLinker alternatives

    October 25, 2023 by createIT
    The power of popups: why every WordPress site needs one
    • Technology
    • Trends

    The power of popups: why every WordPress site needs one

    October 24, 2023 by createIT
    AI pet Personality Quiz: revealing your pet’s unique traits
    • Dev Tips and Tricks
    • Technology

    AI pet Personality Quiz: revealing your pet’s unique traits

    October 23, 2023 by createIT
    Cart Abandonment Rate – Report 2023
    • Trends

    Cart Abandonment Rate – Report 2023

    October 20, 2023 by createIT

    Support – Tips and Tricks
    All tips in one place, and the database keeps growing. Stay up to date and optimize your work!

    Contact us