- 1 Introduction
- 2 Features
- 3 Compatibility
- 4 Usage
- 4.1 ShortCodes
- 4.1.1 Display a single user quiz results table
- 4.1.2 Display a group of users quiz results table
- 4.1.3 Display all results for LearnDash groups
- 4.1.4 Users Results Shortcode Attributes
- 4.1.5 Display a quiz results statistics and its histogram chart
- 4.1.6 Display a post quiz children results statistics and their histogram chart
- 4.1.7 Display group quiz attempts statistics and associated bar chart
- 4.2 Hooks
- 4.1 ShortCodes
- 5 Notes
- 6 Development Status
- 7 Changelog
- 7.1 v1.7.0 (2023-07-27)
- 7.2 v1.6.2 (2021-08-09)
- 7.3 v1.6.1 (2020-06-16)
- 7.4 v1.6.0 (2020-06-16)
- 7.5 v1.5.3 (2019-07-16)
- 7.6 v1.5.2 (2019-05-31)
- 7.7 v1.5.1 (2019-02-18)
- 7.8 v1.5.0 (2019-02-12)
- 7.9 v1.4.6 (2018-12-09)
- 7.10 v1.4.5 (2018-10-29)
- 7.11 v1.4.3 (2018-06-25)
- 7.12 v1.4.2 (2018-04-05)
- 7.13 v1.4.1 (2018-04-04)
- 7.14 v1.4 (2018-04-03)
- 7.15 v1.3 (2017-10-04)
- 7.16 v1.2 (2017-08-03)
- 7.17 v1.1.1 (2017-07-07)
- 7.18 v1.1 (2017-06-09)
- 7.19 v1.0.4 (2017-05-12)
- 7.20 v1.0.3 (2017-05-05)
- 7.21 v1.0.2 (2017-04-28)
- 7.22 v1.0.1 (2017-04-28)
- 7.23 v1.0 (2017-01-31)
- 8 Licenses
Introduction
For a LearnDash LMS based website I manage, the admin needed to manually copy paste all notes from her classrooms in another software used by the high-school, and which doesn’t have import CSV/SpreadSheets/File functionality.
It was not very handy because when you display LearnDash Quiz Results, you have to do open a page manually for each users, and the results are not filtered: you have all attempts to all quiz. It looks good, but you can’t filter the results, and copy pasting is not very easy at it requires to select with click and drag a lot of times. The LD native table table is nice and well adapted to a particular user progression in details, but a more efficient solution can be found to fit our particular needs.
The main issue was that the admin needed to have reports for all users of a classroom/groups. Reports per groups of users. So it required to first filter the student list by groups and then open a page for each one of them, and do the selection + copy pasting, taking care of the date, of the attempt index for the quiz etc. What a pain.
I came up with the idea of displaying students results per group on a single page, with results filtered to only display the attempt of a quiz (which is, in the vast majority of cases, the best score). And to make the copy pasting more easier, a simple click on a cell would copy the result. Also, I added filters to be able to only display the desired time range. This was a huge time saver, and more user-friendly.
To push the thing even further, I decided to add just a touch of DataVisualization, by including interactive bar charts below the tables.
I realized it could be useful to others, so I took two days to make it sharp and clean: it is now ready to be a premium add-on for LearnDash!
Let’s discover the features and the look of the plugin.
Update: few months later, I still update and maintain this plugin!
Features
- Interactive Tables per Users with
- Search filter
- Sort by Quiz Name, Quiz Date, Last User Date, Score
- Date filter (min and max)
- Interactive Results Charts per User
- Interactive Tables per Quiz Statistics Entry with
- Search filter
- Sort by User Name, Last User Date, Score
- Interactive Results Charts per Quiz Statistics Entry
- Custom user meta table (for certain shortcodes)
- (New) Last or Best score front-end switch
- Filter by LearnDash Group leaders
- Possibility to output several users table and charts at the same times with groups shortcode
- CSV Export
- Global copy button, or simply click on a cell to copy a value
- Display only most recent quiz attempt for each quiz
- Customizable chart with filter
- Update from Dashboard
- Charts and tables customizable with CSS. For the chart, see Highcharts doc.
Compatibility
Usage
ShortCodes
Display a single user quiz results table
[ld_group_quiz_table]
Display a group of users quiz results table
[ld_group_quiz_results]
Display all results for LearnDash groups
A useful shortcode for admins, wich let you choose what you want to display, on one single page.
ld_group_quiz_results_all
Users Results Shortcode Attributes
These attributes are common to the [ld_group_quiz_table]
and [ld_group_quiz_results]
shortcodes. It is the same for ld_group_quiz_results_all
but without the id
support, as it is determined by the user with the drop-down menu.
Attribute | Type | Default | Requirement | Action | Other Values |
---|---|---|---|---|---|
id |
integer or csv if type is set to users. | 1 |
Required | Choose a group ID | integer or string. |
type |
string | "learndash" |
Optional | Choose what kind of groups you want to display | "groups" for itthinx Groups,"buddypress" for BuddyPress,"all" for all,"users" for csv of ids,"current" for current user only,"learndash_leader" for only users for which the current users is group leader. |
user_meta |
string, csv | "" |
Optional | Choose other user meta column to display for the ld_group_quiz_table shortcode. |
WordPress user_meta names separated by commas. |
all_attempts |
string | false |
Optional | Display all attepts instead of just last or best. | true for display all attempts of the user (not on user results shortcode for now). |
quizzes_order |
string | asc |
Optionnal | Sort the quizzes by a specific order. | desc for having quiz displayed for last published to first publish. |
last_best |
string | last |
Optionnal | Display last or best results for the users. | last for displaying last score, best for displaying best score,. |
not_passed |
string | '' |
Optionnal | How to calculate non-passed quiz for the group render shortcode. | '' doesn’t add non-passed quiz to the user calculations, 0 for considering a score of 0 for non-passed quiz,. |
Display a quiz results statistics and its histogram chart
Are your quiz too difficult? Is there some users which are way above or below the average? What about the median and the overall distribution? Do you want to have a sorted table of your users results? The table and the histogram rendered by this shortcode will help you to answer this question.
The user score is the highest score he got, which is usually his last passage.
[ld_quiz_stats id="0"]
The id is the post id for which you want to display the results statistics table and histogram.
Display is similar to the shortcode presented below.
Display a post quiz children results statistics and their histogram chart
Like the above shortcode but with front end control to allow you to choose any courses, lessons and topics and get their quiz children. A course has to be set to avoid huge request on the server.
[ld_quiz_stats_all]
Display group quiz attempts statistics and associated bar chart
[ld_group_quiz_attempts]
will display a table and chart to compare the number of quiz attempts VS quiz mastered by users. Attributes are mainly the same as [ld_group_quiz_table]
shortcode.
Hooks
Filters
The following code snippet are the filters declaration, not usage examples. You can see examples usage on this Gist page.
learndash_users_results_datatable_data
apply_filter( 'learndash_users_results_datatable_data', $data_attr, $user_id );
This can allow you to add more parameter as data attribute for the tables, especially for rendering the graph.
learndash_users_results_user_display
apply_filters( 'learndash_users_results_user_display', $user_info );
This filter allows you to change user names display. Useful to replace it by Last Name + First Name, or by randomly generated strings.
learndash-users-results-users
apply_filters( 'learndash-users-results-users', $users, $tags );
This filter allows you to modify users list.
learndash_users_results_quizzes
apply_filters( 'learndash_users_results_quizzes', $quizzes, $user_id );
This filter allows you to modify users what quiz should be rendered.
Notes
- Coded with WordPress conventions and standards in mind.
- Clean deactivation and uninstall process.
- Minimal default styles for better integration in your theme.
- Default sorting arrows for table required Font-Awesome, but you can replace them with custom CSS.
- Performance is highly dependent on your amount of data. The more quiz and users you have, the more it can take to load.
- Showcased on the official LearnDash Community Addons page: More LearnDash Add-Ons | LearnDash
Development Status
No new features planned at this time. The plugin already satisfy more than what I initially needed. The only known issue is that I don’t have find a way to make datatables buttons (copy and successful copy) translatable in a WordPress-friendly way at this time.
Some customization ability (hooks, shortcodes attributes, plugin compatibility) can be suggested by users. Advanced customization/update may require custom development contract.
Changelog
v1.7.0 (2023-07-27)
- Update Highcarts to v11.0.1
- Update DataTables to 1.13.4
- Remove clipboard JS – replace by pure JS
- Remove jQuery Inview – replace by pure JS
- Various fixes and optimization
v1.6.2 (2021-08-09)
- Multisite admin menu
v1.6.1 (2020-06-16)
- Add
not_passed
shortcode attributes support for the ajax render “all” shortcode
v1.6.0 (2020-06-16)
- Add
last_best
shortcode attributes for shortcode displaying user score. - fix some CSS styling
- Updated dependencies
- Minor optimization
v1.5.3 (2019-07-16)
- Version bump
v1.5.2 (2019-05-31)
- Clipboard.js updated to prevent JS problem with WordPress 5.2.
v1.5.1 (2019-02-18)
- Updated dependencies
- fix
type="learndash_leader"
for all shortcodes. quizzes_order
new attributeall_attempts
new attribute
v1.5.0 (2019-02-12)
type="learndash_leader"
for all shortcodes.- New
[ld_groups_quiz_attempts]
shortcode - Few optimizations
v1.4.6 (2018-12-09)
learndash_leader
shortcode attribute forld_group_quiz_results_all
shortcode.- Bug fixes
v1.4.5 (2018-10-29)
- -0 score became “Not passed” string.
v1.4.3 (2018-06-25)
user_meta
attribute shortcodes
v1.4.2 (2018-04-05)
- Bug fixes
v1.4.1 (2018-04-04)
ld_quiz_stats
column header fixed
v1.4 (2018-04-03)
- New shortcodes:
ld_quiz_stats
andld_quiz_stats_all
- Update Highcharts to v6
v1.3 (2017-10-04)
- New shortcode:
ld_group_quiz_results_all
- Prevent shortcode interference
- Fix reset date filter
- Update EDD updater
v1.2 (2017-08-03)
- BuddyPress groups support.
v1.1.1 (2017-07-07)
- Add
ld_group_quiz_results_leader
andld_group_quiz_table_leader
shortcodes.
v1.1 (2017-06-09)
- Update bug fix
- New ld_group_quiz_table shortcode with table and graph
- Style charts by CSS
- Warning (backward compatible issue): ld_user_quiz_results shortcode is replaced by [[ld_group_quiz_results type=”current”]]
- New “id” types for shortcodes (you can put id of users as CSV)
- Charts lazy loading (now appears only if their source table is on screen)
- Charts columns colored according to “quiz-passed” status
- Prevent image loading by DataTables, now required Font-Awesome or custom CSS for sorting arrows display
- New filters for quiz and users
- Performance optimizations
v1.0.4 (2017-05-12)
- New filter to change user name display. See doc on the product page.
v1.0.3 (2017-05-05)
- Don’t load assets from CDN (all scripts and styles are now included).
- Small refactoring and optimizations
v1.0.2 (2017-04-28)
- Bug Fix
- All groups type attribute
v1.0.1 (2017-04-28)
- New translation strings
v1.0 (2017-01-31)
- Initial release
Licenses
License are valid 365 days, from purchase date.