Je veux faire quelque chose après que WordPress ait envoyé un e-mail. Par exemple, après l'envoi d'un e-mail "Réinitialiser le mot de passe" à l'aide de la wp_mail()
fonction.
Je veux faire quelque chose après que WordPress ait envoyé un e-mail. Par exemple, après l'envoi d'un e-mail "Réinitialiser le mot de passe" à l'aide de la wp_mail()
fonction.
Réponses:
J'ai fait quelques recherches dans la PHPMailer
classe et j'ai constaté qu'elle prend en charge une action personnalisée .
Voici comment le rappel est activé avec la doCallback()
méthode de la classe.
Il existe également un PHPMailer
test sur GitHub utilisant cette fonctionnalité via le callbackAction()
rappel.
Nous pouvons le configurer dans WordPress avec:
$phpmailer->action_function = 'wpse_mail_action';
où wpse_mail_action()
est le rappel d'action.
Voici un exemple de la façon dont nous pouvons appliquer 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';
} );
Maintenant, nous avons accès au wpse_mail_action
crochet.
Nous pourrions alors ajouter notre propre enregistreur de courrier et vérifier si les courriels ont bien été envoyés ou non.
Voici un exemple (non testé) de la façon dont nous pourrions faire quelque chose après l'envoi des messages "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 quelques restrictions supplémentaires et envelopper d'autres actions si nécessaire, comme le retrieve_password
crochet.
wp_mail()
pourrait donc ne jamais être appelé dans CF7. Notez que les plugins tiers sont hors sujet ici sur WPSE. @AmirMousavi