Voglio fare qualcosa dopo che WordPress ha inviato un'email. Ad esempio, dopo aver inviato l'e-mail "Reimposta password" utilizzando la wp_mail()
funzione.
Voglio fare qualcosa dopo che WordPress ha inviato un'email. Ad esempio, dopo aver inviato l'e-mail "Reimposta password" utilizzando la wp_mail()
funzione.
Risposte:
Ho scavato nella PHPMailer
classe e ho scoperto che supporta un'azione personalizzata .
Ecco come viene attivato il callback con il doCallback()
metodo nella classe.
C'è anche un PHPMailer
test su GitHub che utilizza questa funzione tramite il callbackAction()
callback.
Possiamo configurarlo in WordPress con:
$phpmailer->action_function = 'wpse_mail_action';
dov'è wpse_mail_action()
il callback dell'azione.
Ecco un esempio di come possiamo applicare questo:
/**
* 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';
} );
Ora abbiamo accesso al wpse_mail_action
gancio.
Potremmo quindi aggiungere il nostro registratore di posta e verificare se le e-mail sono state inviate correttamente o meno.
Ecco un esempio (non testato) di come potremmo fare qualcosa dopo l'invio dei post "Reimpostazione password":
/**
* 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 );
dove potremmo aggiungere ulteriori restrizioni e concludere altre azioni se necessario, come il retrieve_password
gancio.
wp_mail()
potrebbe non essere mai chiamato in CF7. Si noti che i plug-in di terze parti sono fuori tema qui su WPSE. @AmirMousavi