LLMS_Engagement_Handler::handle_email( mixed[] $args )
Send an email engagement
Description Description
This is called via do_action() by the ‘maybe_trigger_engagement’ function in this class.
Parameters Parameters
- $args
-
(mixed[]) (Required) An array of arguments from the triggering hook.
- (int) WP_User ID.
- '1'
(int) WP_Post ID of the email. - '2'
(int|string) WP_Post ID of the related triggering post or an empty string for engagements with no related post. - '3'
(int) WP_Post ID of the engagement post.
Return Return
(bool|WP_Error[]) Returns true
on success and array of error objects when the email has failed or is prevented.
Source Source
File: includes/class-llms-engagement-handler.php
public static function handle_email( $args ) { $can_process = self::can_process( 'email', ...$args ); if ( true !== $can_process ) { return $can_process; } list( $person_id, $email_id, $related_id ) = $args; $meta_key = '_email_sent'; $msg = sprintf( __( 'Email #%1$d to user #%2$d triggered by %3$s', 'lifterlms' ), $email_id, $person_id, $related_id ? '#' . $related_id : 'N/A' ); if ( $related_id && absint( $email_id ) === absint( llms_get_user_postmeta( $person_id, $related_id, $meta_key ) ) ) { // User has already received this email, don't send it again. llms_log( $msg . ' ' . __( 'not sent because of dupcheck.', 'lifterlms' ), 'engagement-emails' ); return array( new WP_Error( 'llms_engagement_email_not_sent_dupcheck', $msg, $args ) ); } // Setup the email. $email = llms()->mailer()->get_email( 'engagement', compact( 'person_id', 'email_id', 'related_id' ) ); if ( $email && $email->send() ) { if ( $related_id ) { llms_update_user_postmeta( $person_id, $related_id, $meta_key, $email_id ); } llms_log( $msg . ' ' . __( 'sent successfully.', 'lifterlms' ), 'engagement-emails' ); return true; } // Error sending email. llms_log( $msg . ' ' . __( 'not sent due to email sending issues.', 'lifterlms' ), 'engagement-emails' ); return array( new WP_Error( 'llms_engagement_email_not_sent_error', $msg, $args ) ); }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Moved from LLMS_Engagements class. Removed engagement debug logging. Ensure related post, email template, and engagement all exist and are published before processing. |
4.4.3 | Fixed different emails triggered by the same related post not sent because of a wrong duplicate check. Fixed dupcheck log message and error message which reversed the email and person order. |
4.4.1 | Use postmeta helpers for dupcheck and postmeta insertion. Add a return value in favor of void . Log successes and failures to the engagement-emails log file instead of the main llms log. |
3.8.0 | Unknown. |
2.3.0 | Introduced. |