Faire quelque chose après l'envoi d'un email

11

Je veux faire quelque chose après que WordPress a envoyé un email. Par exemple, après avoir envoyé l’e-mail "Réinitialiser le mot de passe" en utilisant la fonction wp_mail() .

    
posée Ameer Mousavi 09.06.2015 - 13:39

1 réponse

13

Utilisation de la classe PHPMailer avec un rappel d'action:

J'ai creusé dans la classe PHPMailer a constaté qu'il prend en charge une action personnalisée .

Voici comment le rappel est activé avec le < a href="https://github.com/WordPress/WordPress/blob/cb39d03501aae82c7f16f67c93ab0452ef870c46/wp-includes/class-phpmailer.php#L3231"> doCallback() dans la classe.

Il existe également un PHPMailer test sur GitHub à l'aide de cet événement via le site WebcallbackAction() callback.

Nous pouvons le configurer dans WordPress avec:

$phpmailer->action_function = 'wpse_mail_action';

wpse_mail_action() est le rappel d'action.

Voici un exemple d'application de ceci:

/**
 * Custom PHPMailer action callback
 */
function wpse_mail_action( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
    do_action( 'wpse_mail_action', $is_sent, $to, $cc, $bcc, $subject, $body, $from );
    return $is_sent; // don't actually need this return!
}

/**
 * Setup a custom PHPMailer action callback
 */
add_action( 'phpmailer_init', function( $phpmailer )
{
    $phpmailer->action_function = 'wpse_mail_action';
} );

Nous avons maintenant accès au wpse_mail_action hook.

Nous pourrions ensuite ajouter notre propre enregistreur de courrier et vérifier si les messages ont bien été envoyés ou non.

Exemple:

Voici un exemple (non testé) de la procédure à suivre après l'envoi des publications "Réinitialisation du mot de passe":

/**
 * Do something after the "Password Reset" post has been successfully sent:
 */
add_action( 'wpse_mail_action', function( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
    if( $is_sent && false !== stripos( $subject, 'Password Reset' ) )
        // do stuff

}, 10, 7 );

où nous pourrions ajouter des restrictions supplémentaires et intégrer d'autres actions si nécessaire, comme le retrieve_password hook.

    
réponse donnée birgire 09.06.2015 - 14:19

Lire d'autres questions sur les étiquettes