22/**
33 * llms-cert-custom-merge-example.php
44 *
5- * @since 2017-10-23
5+ * @since 2025-11-24 Updated with more reliable filters.
66 */
7+
78/**
8- * Add custom merge codes to an LLMS certificate
9- * @param int $user_id WP_User ID
10- * @param int $cert_id WP_Post ID of the generated certificate
11- * @param int $related_post_id WP_Post ID of the post which triggered the certificate generation
12- * @return void
9+ * Filter the array of available merge codes.
10+ *
11+ * @param array $merge_codes Array of available merge codes, and their description.
12+ *
13+ * @return array
1314 */
14- function my_custom_cert_merge_codes ( $ user_id , $ cert_id , $ related_post_id ) {
15-
16- $ cert_post = get_post ( $ cert_id );
15+ function my_custom_available_certificate_merge_codes ( $ merge_codes ) {
16+ $ merge_codes ['{your_merge_code} ' ] = 'Your Merge Code Description ' ;
1717
18- $ content = str_replace ( '{your_merge_code} ' , get_user_meta ( $ user_id , 'your_user_meta_key ' , true ), $ cert_post ->post_content );
18+ return $ merge_codes ;
19+ }
20+ add_filter ( 'llms_certificate_available_merge_codes ' , 'my_custom_available_certificate_merge_codes ' );
1921
20- wp_update_post ( array (
21- 'ID ' => $ cert_id ,
22- 'post_content ' => $ content
23- ) );
22+ /**
23+ * Add custom merge code data to an LLMS certificate.
24+ *
25+ * @param array $codes Array of key (merge code with brackets) and value (data to replace it with)
26+ * @param int $user_id WP_User ID
27+ * @param int $template_id WP_Post ID of the certificate template
28+ * @param int $related_post_id WP_Post ID of the post which triggered the certificate generation
29+ *
30+ * @return array
31+ */
32+ function my_custom_certificate_merge_code_data ( $ codes , $ user_id , $ template_id , $ related_id ) {
33+ $ codes ['{your_merge_code} ' ] = get_user_meta ( $ user_id , 'your_user_meta_key ' , true );
2434
35+ return $ codes ;
2536}
26- add_action ( 'llms_user_earned_certificate ' , 'my_custom_cert_merge_codes ' , 999 , 3 );
37+ add_filter ( 'llms_certificate_merge_data ' , 'my_custom_certificate_merge_code_data ' , 10 , 4 );
0 commit comments