Do Your Courses Require Recertification?

Generate Certificate Expiry Dates with the Certificate Tracker Pro for LearnDash

With this innovative plugin you can easily track and verify certificates as it generates a unique certificate ID and certificate expiry-date for both Course and Quiz certificates. This is perfect for courses that require recertification.

(1 Site, Yearly License, Requires LearnDash 3.0 and above)

£56.99

How do you generate the Certificate ID?

The following shortcode will generate a unique Certificate ID when inserted into the LearnDash certificate post, and contains four nodes.

[elc_certificate_id]
{ prefix optional }-{ timestamp }-{ course/quiz post ID }-{ user ID }

The nodes are separated by a single ‘-’ (dash) character.
A prefix is optional for the first node. The prefix can be up to 8 alphanumeric characters with no special characters. If you use it, the parameter value will be at the beginning of the certificate ID.e.g.

[elc_certificate_id prefix="ELC"]

In the example above, the shortcode will generate a certificate ID starting with "ELC". eg. ELC-1643879918-34179-2

Let’s explore the Expiry Date in more detail.

PLEASE NOTE: The expiry shortcode calculates the certificate expiration date based on a quiz or course completion and it’s parameters. The shortcode does not set the quiz or course availability nor does it set the requirements for recertification. The plugin does not define in what way the recertification process is set.

The certificate expiry date is calculated using whichever of the following options applies. And with our new time interval addition, it’s going to make it a lot easier to keep track of your certificates’ that require an expiration date!

  • completion date of the quiz/course,
  • date when the quiz/course was completed the 1st time by the user,
  • specified date – where everyone’s certificate expires at the same day.

Interval (default value is “1 year”)

[elc_certificate_expire]

The above shortcode sets the date time period (interval) for expiry date that is added to the course/quiz completion time.

For valid value refer to: https://www.php.net/manual/en/datetime.formats.relative.php
[elc_certificate_expire interval="6 month"]

If the course or quiz were completed on January 12, 2022 

The certificate expiry date will be set to July 12, 2022.

Modifier

This parameter allows to modify further the expiry date after it has been calculated.
For reference see: https://www.php.net/manual/datetime.formats.php

[elc_certificate_expire interval="1 year" modifier="last day of previous month"]

In this example the certificate expiry date is set to completion date and interval of 1 year. 
If quiz was completed the 1st time on March 21, 2022, the expiry date will be set to March 21, 2023.
The modifier parameter allows to modify further the expiry date. 
The above example will set the expiry date to February 28, 2023.

Fixed (optional)

[elc_certificate_expire interval="1 year" fixed]

If quiz was completed the 1st time on March 21, 2022 (and interval being set to "1 year") 

The expiry date will be set to March 21, 2023. 

The March 21 will be set as a fixed expiry date and will be repeated by adding interval.

The expiry dates will be generated for March 21, 2023, March 21, 2024, March 21, 2025 etc.
[elc_certificate_expire interval="1 year" fixed="jan 1"]

The expiry date will be set to the date specified by parameter value (date) and repeated by adding the interval value. Example: If fixed is set to January 1, this date will become fixed and repeated by interval.

If the quiz was completed on September 2, 2022 (and interval being set to "1 year") 

The expiry dates will be generated for January 1, 2023, January 1, 2024, January 1, 2025 etc.

With rct_begin you can set the start time window that your certificates will be renewed (rectified)


[elc_certificate_expire interval="1 year" fixed="jan 1" rct_begin="1 month" datetime_format="Y-m-d"]

The end of the recertification time window is the expiry date. For example:
 
If the expiry date is 2023-01-02 (January 2nd, 2023) and rct_begin is set to "1 month".

The beginning of the recertification time window is 2022-12-02 (December 2nd, 2022). 

If the completion time is within the recertification time period, the expiration date will be increased by the interval time.
[elc_certificate_expire interval="1 year" fixed="jan 1" rct_begin="1 month" datetime_format="Y-m-d"]

In the above  example the beginning of the recertification time window is set to one month before the certification date (January 01) and so it is December 01, year before. 

If the course/quiz was completed on 2022-11-30, 

The expiry date will be set to 2023-01-01. 

However if the course/quiz was completed on 2022-12-01 which is in the recertification window, 

The expiry date will be 2024-01-01.

This parameter does not have any effect on the quiz/course availability for the user. This parameter has no effect if a fixed parameter is not used. This is because the definition of a fixed parameter is not being used.

Use force_month_end to NOT roll invalid month/days over to the next month

This parameter is only effective if you set the interval to be months. e.g.: 1 month, 3 months, 6 months etc. 

If a day is not valid for the PHP, then the system will roll over to the next day in the next month. E.g.: January 31 plus 1 month would result February 31 (which is invalid date).

In this case, the PHP will roll the days into the next month on March 3rd, or March 2nd on a leap year. 

If you put "force_month_end" in the shortcode, it means that the days won't roll over. 

The last day of the month will show up instead. E.g. January 31 plus 1 month would result February 28 or February 29 on the leap year.

datetime_format (optional)

The date and time format used to display the expiry date. 
For supported formats see: PHP: DateTimeInterface::format - Manual

The following are some examples for expiry date shortcode

Yearly certificate expiry date based on quiz and/or course completion date.

[elc_certificate_expire interval="1 year" datetime_format="Y-m-d"]

The expiry date is created by adding 1 year to the quiz and/or course completion date. E.g.: The quiz is completed on 2022-08-24 the expiry date will be 2023-08-24. 

Note: 

If the next quiz attempt occurred on 2023-07-21, the expiry date will be 2024-7-21.

Yearly certificate expiry date based on fixed date

[elc_certificate_expire interval="1 year" fixed="jan 01" datetime_format="Y-m-d"]

The expiry date will be closest January 1, regardless the month and day the quiz and/or course was completed.

If the quiz is completed on 2022-08-24 the closest January 1 will be 2023-01-01. 

Note: 

This example will produce series of expiry date with 1 year interval: 2023-01-01, 2024-01-01, 2025-01-01, 2026-01-01 and so on.

Yearly certificate expiry date based on fixed date, with 1 month recertification period specified

[elc_certificate_expire interval="1 year" fixed="jan 01" rct_begin="1 month" datetime_format="Y-m-d"]

For definition of recertification window see rct_begin above.

The expiry date in the example above is closest to January 1, but there is a difference.  

If you complete the quiz and/or course on or after 2022-12-01, the plugin will generate the 2nd closest expiration date. 

The new expiration date would be 2024-01-01.

If you complete the quiz and/or course before 2022-12-01, the plugin will generate the closest expiry date, which would be 2023-01-01.

Recertification begin   Expiry date
2023-12-01              2024-01-01
2024-12-01              2025-01-01
2025-12-01              2026-01-01
2026-12-01              2027-01-01

The expiration date for your yearly certificate is based on when you completed the quiz and/or course the first time.

[elc_certificate_expire interval="1 year" fixed datetime_format="Y-m-d"]

In the example above, setting a fixed date will create an expiration date. The difference is that a fixed date is set by the time the quiz or course was completed the first time. This date (day/month) is the permanent date. E.g.: If you complete the quiz on 2023-03-22 but you completed it (and passed) the first time on 2022-08-24, then August 24 becomes a permanent date.
[elc_certificate_expire interval="1 year" fixed rct_begin="1 month" datetime_format="Y-m-d"]

This example is very similar to 'Yearly certificate expiry date based on fixed date, with 1 month recertification period specified' (above), except the 1st completion date (month/day) is used. Or (The expiration date for a certificate is based on a fixed date, plus one month. This gives the certificate holder enough time to recertify and still have the certificate valid.

Quarterly certificate expiry date based on quiz and/or course completion date.

[elc_certificate_expire interval="3 months" datetime_format="Y-m-d"]

Quarterly certificate based on fixed date, with 1 week recertification period specified

[elc_certificate_expire interval="3 months" fixed="jan 01" rct_begin="1 week" datetime_format="Y-m-d"]

Quarterly certificate based on when the quiz and/or course was completed 1st time

[elc_certificate_expire interval="3 months" fixed datetime_format="Y-m-d"]

Quarterly certificate based on when the quiz and/or course was completed 1st time. Force use last month day rather than rolling invalid month days to the next month

[elc_certificate_expire interval="3 months" fixed force_month_end datetime_format="Y-m-d"]

When the interval uses month units the force_month_end will prevent rolling expiry date to the next month if the calculated day results invalid date.

without force_month_end    Expiry with force_month_end date
2023-03-03                 2023-02-28 (the month day did not roll over)
2023-05-31                 2023-05-31
2023-08-31                 2023-08-31
2023-12-01                 2023-11-30 (the month day did not roll over)
2024-03-02                 2024-02-29 (the month day did not roll over) This is a leap year.
2024-05-31                 2024-05-31

The Certificate Tracker Po provides you with 3 options to generate a QR Code.

The Certificate Tracker Po provides you with 3 options to generate a QR Code. This data also integrates seamlessly into our Certificate Verifier for Learndash add on, which is available for purchase separately!

  • With the Shortcodes Ultimate plugin, you can generate QR Codes that are generated on an external server.
  • The TCPDF library is included with LearnDash, and the QR Code will be generated at server level.
  • The QR Code can be added as part of the certificate background. This position is specified by coordinates and does not depend on content within certificates. The QR Code is generated at the server where LearnDash is installed. This method is not supported if you created your certificate using the LearnDash LMS – Certificate Builder.
Insert as part of background (Legacy Certificate Editor Only)

How to enable?
Once your certificate is published, edit it and check ON Enable in ELC QR-Code options meta-box.
You will be able to control all properties for QR Code, such as: size, position, color etc.

This implementation of QR Code replaces the QR Code shortcodes. The replacement is not automatic, it means that if you decide to use it you have to remove QR Code shortcode(s) from certificate content.

The QR Code element does not alter the layout set in certificate content field. The element is placed on top of background and/or featured image, on the first PDF page. The text entered in certificate content field may overlap the QR Code in the same manner as it overlaps background.
Therefore, it is solely up to you to you to place the element away from the text, use alignment and position fields.

When using background (featured) image it may be necessary to use background color and padding, see below.

The ELC Certificate QR Code implementation uses TCPDF library with LearnDash LMS plugin. The QR Code implementation uses settings (natively) supported by TCPDF library, with exception of ‘Making QR Code clickable’, see below.

Insert as part of certificate content (using shortcode)

Sitebuilders can choose to use a shortcode instead of using ELC QR Code options in LearnDash LMS -> Certificate settings. This eloquently provides for backward compatibility with previously created certificate HTML code. The following shortcode example provides detailed information on the shortcode and its attributes.

Shortcode: example of ELC Certificate QR Code shortcode with all supported parameters.

[[elc_certificate_qrcode data="http://your_site/" size="120" padding="0" color="#000000" background="#FFFFFF" title="Certificate Verification page" link="true" target="blank" class="my-class" ecl="L"]]

Above example will create QR Code with: 120×120 size, 0 padding, black foreground, white background, link (QR Code will be clickable), the link will open new browser window or tab, the QR Code can be styled using my-class selector, the error correction level set to L (low).

The example uses all available attributes however, it is NOT necessary to use all attributes. You only use attributes that are needed. The shortcode with no attributes [elc_certificate_qrcode] will output the QR Code as well.

This implementation uses TCPDF library distributed with LearnDash LMS plugin. The QR Code is generated in SVG format and inserted to the certificate using shortcode.

Difference between this implementation and using ‘Shortcodes Ultimate’, ‘QR Code’:

  • The size attribute is respected. No need to wrap the shortcode in a html tag to force resize.
  • The QR Code is generated on your site. There is no lag in waiting for (external) server user by ‘Shortcodes Ultimate’ plugin.

Available Shortcode Attributes

All attributes are optional. We do however suggest to use at least: data and size.

If certificate uses ‘featured image’ and the QR Code is over part of the colored graphics it will not be readable. In such a case the QR Code requires plain color background and padding (‘quiet zone’ refer to: https://www.qrcode.com/en/howto/code.html), use background and padding attributes.

Attribute name and descriptionFormat and possible valuesDefault value
data
QR-Code data and HTML hyperlink tag href attribute
Valid URL to Certificate Verification page.
This data is stored in QR Code and will be appended with Certificate ID.
e.g.: https://your-site/certificate-verification
Site URL
size
QR-Code size (width and height) in user units
Decimal number (no fraction).
If NOT specified the QR Code will have natural size depending on size of data (see above).
e.g.: 100
none
padding
QR-Code padding (all four sides) in user units
Decimal number (can have fraction)
e.g.: 10 or 9.125
0
color
QR-Code foreground color
WEB color name, RGB, CMYK, HEX 3 and 6-digit
e.g.: red, rgb(255,0,0), cmyk(0,99,100,0), f00, #ff0000
ffffff
(black)
background
QR-Code background color
same as abovenone
(transparent)
title
HTML image tag alt attribute
Alternative text for the QR Code.
If QR Code cannot be displayed and/or if link title if link is true or 1. Works only at certificate preview page, does NOT affect the PDF.
e.g.: Certificate Verification page
none
link
HTML create hyperlink tag.
The QR-Code will be clickable when viewed on desktop or mobile device.
Boolean or number (true or false or 0 or 1)
If true or 1, the QR Code will be clickable when certificate PDF is viewed on screen. The link will include URL to Certificate Verification page with Certificate ID.
e.g.: true, false, 1, 0
none
target
HTML hyperlink tag target attribute
blank or self
Specifies where to open the linked Certificate Verification page.
e.g.: blank
Will open the Certificate Verification in a new window or tab.
blank
class
HTML inline wrapper
Valid CSS class name.
If specified the QR-Code will be wrapped in container that can be styled with CSS..
e.g.: my-class
none
ecl
Error Correction Level
Possible values are L, M, Q or H.
Important for printed QR Code, affects (slightly) PDF size.
Please read: https://www.qrcode.com/en/about/error_correction.html.
L
Use Shortcodes Ultimate, QR Code

Insert a Shortcodes Ultimate, QR Code (generator). Original (first) implementation. A legacy, but we support it for those who already have it all configured.

Scroll to Top